pax_global_header00006660000000000000000000000064143637213170014521gustar00rootroot0000000000000052 comment=b6b6cb737d47a85ddc720fda0e6b991e99224848 mail-2.8.1/000077500000000000000000000000001436372131700124535ustar00rootroot00000000000000mail-2.8.1/.github/000077500000000000000000000000001436372131700140135ustar00rootroot00000000000000mail-2.8.1/.github/workflows/000077500000000000000000000000001436372131700160505ustar00rootroot00000000000000mail-2.8.1/.github/workflows/test.yml000066400000000000000000000037341436372131700175610ustar00rootroot00000000000000name: RSpec tests on: push: branches: [ master, "*-stable" ] pull_request: branches: [ master, 2-8-stable ] jobs: ruby: name: ${{ matrix.ruby }} (timeout ${{ matrix.timeout }}) runs-on: ubuntu-latest timeout-minutes: ${{ matrix.timeout }} strategy: fail-fast: false matrix: include: - ruby: 2.5 timeout: 5 - ruby: 2.6 timeout: 5 - ruby: 2.7 timeout: 5 - ruby: '3.0' timeout: 5 - ruby: 3.1 timeout: 5 - ruby: 3.2 timeout: 5 - ruby: truffleruby timeout: 50 - ruby: truffleruby-head timeout: 50 - ruby: jruby timeout: 5 - ruby: jruby-head timeout: 5 - ruby: jruby-9.4 timeout: 5 - ruby: jruby-9.3 timeout: 5 - ruby: jruby-9.2 timeout: 5 steps: - name: Installing libyaml-dev run: | sudo apt-get update sudo apt-get install libyaml-dev - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} rubygems: 3.3.12 bundler-cache: true - name: Run tests run: bundle exec rake spec continue-on-error: ${{ matrix.ruby == 'truffleruby-head' }} actionmailer: runs-on: ubuntu-latest steps: - name: Installing libyaml-dev run: | sudo apt-get update sudo apt-get install libyaml-dev - uses: actions/checkout@v2 - uses: ruby/setup-ruby@v1 with: ruby-version: 3 bundler-cache: true - name: Setup mail with ActionMailer edge run: | git clone --depth=1 https://github.com/rails/rails.git -b main cd rails echo -e "\ngem 'mail', path: '../'" >> Gemfile bundle update --bundler --source mail - name: Run ActionMailer tests run: | cd rails/actionmailer bundle exec rake mail-2.8.1/.gitignore000066400000000000000000000003021436372131700144360ustar00rootroot00000000000000/.bundle /.rbenv-vars /.ruby-version /.rvmrc /bin /corpus /coverage /Gemfile.lock /gems /lib/mail/parsers/ragel/ruby/machines/*.dot /lib/mail/parsers/ragel/ruby/machines/*.svg /mail-*.gem /rdoc mail-2.8.1/CHANGELOG.rdoc000066400000000000000000000045261436372131700146220ustar00rootroot00000000000000== Version 2.8.1 (unreleased) Bug Fixes: * Regression: sendmail accepts string :arguments (@sebbASF) * Regression: accept enable_starttls_auto: false @ahorek == Version 2.8.0.1 (12-Jan-2023) Bug fixes: * Regression: incorrect permissions for some files (mikel) == Version 2.8.0 (3-Dec-2022) Breaking changes: * Add Ruby 3.1 support (deivid-rodriguez, voxik, eregon) * Drop support for Ruby < 2.5 (deivid-rodriguez, voxik) * Message#without_attachments! now deletes nested attachments. (TylerRick) * Sendmail and exim delivery now raise DeliveryError when the command exits with a nonzero exitstatus. (benmmurphy, CoolElvis) * Sendmail and exim delivery :arguments option must be an array of string args. (benmmurphy) * Passing unparsed headers to Mail::Field.new is no longer supported. Use Mail::Field.parse. (jeremy) * Removed long-deprecated features: Message#register_for_delivery_notification, #has_transfer_encoding?, #add_transfer_encoding, #transfer_encoding, #message_content_type, #mime_parameters, #encode!, and Part#inline_content_id. (jeremy) Deprecations: * Deprecates Mail::CheckDeliveryParams in favour of Mail::SmtpEnvelope Compatibility: * Handle a wide variety of non-RFC Message-ID formats. (peterkovacs) * Normalize Quoted-Printable line endings for text content. (jeremy) * Gracefully parse invalid dates in Date and Received headers. (okkez) * Converting to multipart moves Content-* headers to the new part. (kirikak2) * Multipart Content-Type no longer includes a needless charset param. (kirikak2) * Replies prefix subject with "Re: " instead of "RE: " per 5322 3.6.5. (mashedcode) * Gracefully handle multiple, possibly-invalid headers for what should be singular fields. (rosa) * SMTP delivery with enable_tls/starttls/starttls_auto: false now disables these options, since starttls is now :auto by default in upstream net-smtp. (jeremy) Features: * Message#inspect_structure and PartsList#inspect_structure pretty-print the hierarchy of message parts. (TylerRick) * `an_attachment_with_mime_type` matcher added to match attachments by mime type Bug Fixes: * Regression: Preserve message-level charset when adding parts (related to Rails ActionMailer) @shields * Regression: Adding a part should not reset the mail's charset to nil @railsbob Please check [2-7-stable](https://github.com/mikel/mail/blob/2-7-stable/CHANGELOG.rdoc) for previous changes. mail-2.8.1/CONTRIBUTING.md000066400000000000000000000041421436372131700147050ustar00rootroot00000000000000Contributing to Mail ==================== Hi there, I welcome pull requests! Here are some thoughts on how to get your pull request merged quickly: 1. Check the Reference RFCs, they are in the References directory, so no excuses. 2. Check for a ticket on GitHub, maybe someone else has the problem too 3. Make a fork of my GitHub repository 4. Run the specs. We only take pull requests with passing tests, and it's great to know that you have a clean slate: `bundle && bundle exec rake` 5. Add a spec for your change. Only refactoring and documentation changes require no new specs. If you are adding functionality or fixing a bug, we need a spec! 6. Test the spec on supported rubies. 7. Update the README if needed to reflect your change / addition 8. Update the CHANGELOG and give yourself credit 9. With all specs passing push your changes back to your fork 10. Send me a pull request. - If it needs any changes, please push or force push to the same branch you made the pull request from. GitHub will just update the pull request with your changes. At this point you're waiting on us. We like to at least comment on, if not accept, pull requests within three business days (and, typically, one business day). We may suggest some changes or improvements or alternatives. Some things that will increase the chance that your pull request is accepted, taken straight from the Ruby on Rails guide: * Tell me you have tested it against more than one version of Ruby, RVM is great for this. I test against 7 rubies before I push into master. * Use good, idiomatic, structured and modular code * Include tests that fail without your code, and pass with it * Update the documentation, the surrounding one, examples elsewhere, guides, whatever is affected by your contribution Coding conventions: * Two spaces, no tabs. * No trailing whitespace. Blank lines should not have any space. * Prefer &&/|| over and/or. * MyClass.my_method(my_arg) not my_method( my_arg ) or my_method my_arg. * a = b and not a=b. * Follow the conventions you see used in the source already. And in case we didn't emphasize it enough: we love specs! mail-2.8.1/Gemfile000066400000000000000000000004711436372131700137500ustar00rootroot00000000000000source 'https://rubygems.org' gemspec if RUBY_VERSION < '2.7.0' gem 'activesupport', '< 6' else gem 'activesupport', :git => 'https://github.com/rails/rails', :branch => 'main' end gem 'jruby-openssl', :platforms => :jruby gem 'mini_mime' gem 'byebug', :platforms => :mri gem "strscan", ">= 3.0.2.pre1" mail-2.8.1/MIT-LICENSE000066400000000000000000000020471436372131700141120ustar00rootroot00000000000000Copyright (c) 2009-2016 Mikel Lindsaar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. mail-2.8.1/README.md000066400000000000000000000546471436372131700137520ustar00rootroot00000000000000# Mail [![Build Status](https://github.com/mikel/mail/actions/workflows/test.yml/badge.svg)](https://github.com/mikel/mail/actions/workflows/test.yml) ## Introduction Mail is an internet library for Ruby that is designed to handle email generation, parsing and sending in a simple, rubyesque manner. The purpose of this library is to provide a single point of access to handle all email functions, including sending and receiving email. All network type actions are done through proxy methods to Net::SMTP, Net::POP3 etc. Built from my experience with TMail, it is designed to be a pure ruby implementation that makes generating, sending and parsing email a no brainer. It is also designed from the ground up to work with the more modern versions of Ruby. Modern Rubies handle text encodings much more wonderfully than before so these features have been taken full advantage of in this library allowing Mail to handle a lot more messages more cleanly than TMail. Finally, Mail has been designed with a very simple object oriented system that really opens up the email messages you are parsing, if you know what you are doing, you can fiddle with every last bit of your email directly. ## You can contribute to this library Yes, you! Mail is used in countless apps by people around the world. It is, like all open source software, a labour of love borne from our free time. If you would like to say thanks, please dig in and contribute alongside us! Triage and fix [GitHub issues](https://github.com/mikel/mail/issues), improve our documentation, add new features—up to you! Thank you for pitching in. # Contents * [Compatibility](#compatibility) * [Discussion](#discussion) * [Current Capabilities of Mail](#current-capabilities-of-mail) * [Roadmap](#roadmap) * [Testing Policy](#testing-policy) * [API Policy](#api-policy) * [Installation](#installation) * [Encodings](#encodings) * [Contributing](#contributing) * [Usage](#usage) * [Excerpts from TREC Span Corpus 2005](#excerpts-from-trec-span-corpus-2005) * [License](#license) ## Compatibility Mail is tested against: * Ruby: 2.5 * Ruby: 2.6 * Ruby: 2.7 * Ruby: 3.0 * Ruby: 3.1 * Ruby: 3.2 * JRuby: 9.2 * JRuby: 9.3 * JRuby: 9.4 * JRuby: stable * JRuby: head * Truffleruby: stable * Truffleruby: head As new versions of Ruby are released, Mail will be compatible with support for the "preview" and all "normal maintenance", "security maintenance" and the two most recent "end of life" versions listed at the [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/) page. Pull requests to assist in adding support for new preview releases are more than welcome. Every Mail commit is tested by GitHub Actions on [all supported Ruby versions](https://github.com/mikel/mail/blob/master/.github/workflows/test.yml). ## Discussion If you want to discuss mail with like minded individuals, please subscribe to the [Google Group](http://groups.google.com/group/mail-ruby). ## Current Capabilities of Mail * RFC5322 Support, Reading and Writing * RFC6532 Support, reading UTF-8 headers * RFC2045-2049 Support for multipart email * Support for creating multipart alternate email * Support for reading multipart/report email & getting details from such * Wrappers for File, Net/POP3, Net/SMTP * Auto-encoding of non-US-ASCII bodies and header fields Mail is RFC5322 and RFC6532 compliant now, that is, it can parse US-ASCII and UTF-8 email and generate US-ASCII email. There are a few obsoleted email syntax that it will have problems with, but it also is quite robust, meaning, if it finds something it doesn't understand it will not crash, instead, it will skip the problem and keep parsing. In the case of a header it doesn't understand, it will initialise the header as an optional unstructured field and continue parsing. This means Mail won't (ever) crunch your data (I think). You can also create MIME emails. There are helper methods for making a multipart/alternate email for text/plain and text/html (the most common pair) and you can manually create any other type of MIME email. ## Roadmap Next TODO: * Improve MIME support for character sets in headers, currently works, mostly, needs refinement. ## Testing Policy Basically... we do BDD on Mail. No method gets written in Mail without a corresponding or covering spec. We expect as a minimum 100% coverage measured by RCov. While this is not perfect by any measure, it is pretty good. Additionally, all functional tests from TMail are to be passing before the gem gets released. It also means you can be sure Mail will behave correctly. You can run tests locally by running `bundle exec rspec`. You can run tests on all supported Ruby versions by using [act](https://github.com/nektos/act). ## API Policy No API removals within a single point release. All removals to be deprecated with warnings for at least one MINOR point release before removal. Also, all private or protected methods to be declared as such - though this is still I/P. ## Installation Installation is fairly simple, I host mail on rubygems, so you can just do: # gem install mail ## Encodings If you didn't know, handling encodings in Emails is not as straight forward as you would hope. I have tried to simplify it some: 1. All objects that can render into an email, have an `#encoded` method. Encoded will return the object as a complete string ready to send in the mail system, that is, it will include the header field and value and CRLF at the end and wrapped as needed. 2. All objects that can render into an email, have a `#decoded` method. Decoded will return the object's "value" only as a string. This means it will not include the header fields (like 'To:' or 'Subject:'). 3. By default, calling #to_s on a container object will call its encoded method, while #to_s on a field object will call its decoded method. So calling #to_s on a Mail object will return the mail, all encoded ready to send, while calling #to_s on the From field or the body will return the decoded value of the object. The header object of Mail is considered a container. If you are in doubt, call #encoded, or #decoded explicitly, this is safer if you are not sure. 4. Structured fields that have parameter values that can be encoded (e.g. Content-Type) will provide decoded parameter values when you call the parameter names as methods against the object. 5. Structured fields that have parameter values that can be encoded (e.g. Content-Type) will provide encoded parameter values when you call the parameter names through the object.parameters[''] method call. ## Contributing Please do! Contributing is easy in Mail. Please read the [CONTRIBUTING.md](CONTRIBUTING.md) document for more info. ## Usage All major mail functions should be able to happen from the Mail module. So, you should be able to just require 'mail' to get started. `mail` is pretty well documented in its Ruby code. You can look it up e.g. at [rubydoc.info](https://www.rubydoc.info/gems/mail). ### Making an email ```ruby mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body File.read('body.txt') end mail.to_s #=> "From: mikel@test.lindsaar.net\r\nTo: you@... ``` ### Making an email, have it your way: ```ruby mail = Mail.new do body File.read('body.txt') end mail['from'] = 'mikel@test.lindsaar.net' mail[:to] = 'you@test.lindsaar.net' mail.subject = 'This is a test email' mail.header['X-Custom-Header'] = 'custom value' mail.to_s #=> "From: mikel@test.lindsaar.net\r\nTo: you@... ``` ### Don't Worry About Message IDs: ```ruby mail = Mail.new do to 'you@test.lindsaar.net' body 'Some simple body' end mail.to_s =~ /Message\-ID: <[\d\w_]+@.+.mail/ #=> 27 ``` Mail will automatically add a Message-ID field if it is missing and give it a unique, random Message-ID along the lines of: <4a7ff76d7016_13a81ab802e1@local.host.mail> ### Or do worry about Message-IDs: ```ruby mail = Mail.new do to 'you@test.lindsaar.net' message_id '' body 'Some simple body' end mail.to_s =~ /Message\-ID: / #=> 27 ``` Mail will take the message_id you assign to it trusting that you know what you are doing. ### Sending an email: Mail defaults to sending via SMTP to local host port 25. If you have a sendmail or postfix daemon running on this port, sending email is as easy as: ```ruby Mail.deliver do from 'me@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'Here is the image you wanted' body File.read('body.txt') add_file '/full/path/to/somefile.png' end ``` or ```ruby mail = Mail.new do from 'me@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'Here is the image you wanted' body File.read('body.txt') add_file :filename => 'somefile.png', :content => File.read('/somefile.png') end mail.deliver! ``` Sending via sendmail can be done like so: ```ruby mail = Mail.new do from 'me@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'Here is the image you wanted' body File.read('body.txt') add_file :filename => 'somefile.png', :content => File.read('/somefile.png') end mail.delivery_method :sendmail mail.deliver ``` Sending via smtp (for example to [mailcatcher](https://github.com/sj26/mailcatcher)) ```ruby Mail.defaults do delivery_method :smtp, address: "localhost", port: 1025 end ``` Exim requires its own delivery manager, and can be used like so: ```ruby mail.delivery_method :exim, :location => "/usr/bin/exim" mail.deliver ``` Mail may be "delivered" to a logfile, too, for development and testing: ```ruby # Delivers by logging the encoded message to $stdout mail.delivery_method :logger # Delivers to an existing logger at :debug severity mail.delivery_method :logger, logger: other_logger, severity: :debug ``` ### Getting Emails from a POP or IMAP Server: You can configure Mail to receive email using retriever_method within Mail.defaults: ```ruby # e.g. POP3 Mail.defaults do retriever_method :pop3, :address => "pop.gmail.com", :port => 995, :user_name => '', :password => '', :enable_ssl => true end # IMAP Mail.defaults do retriever_method :imap, :address => "imap.mailbox.org", :port => 993, :user_name => '', :password => '', :enable_ssl => true end ``` You can access incoming email in a number of ways. The most recent email: ```ruby Mail.all #=> Returns an array of all emails Mail.first #=> Returns the first unread email Mail.last #=> Returns the last unread email ``` The first 10 emails sorted by date in ascending order: ```ruby emails = Mail.find(:what => :first, :count => 10, :order => :asc) emails.length #=> 10 ``` Or even all emails: ```ruby emails = Mail.all emails.length #=> LOTS! ``` ### Reading an Email ```ruby mail = Mail.read('/path/to/message.eml') mail.envelope_from #=> 'mikel@test.lindsaar.net' mail.from.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] mail.sender.address #=> 'mikel@test.lindsaar.net' mail.to #=> 'bob@test.lindsaar.net' mail.cc #=> 'sam@test.lindsaar.net' mail.subject #=> "This is the subject" mail.date.to_s #=> '21 Nov 1997 09:55:06 -0600' mail.message_id #=> '<4D6AA7EB.6490534@xxx.xxx>' mail.decoded #=> 'This is the body of the email... ``` Many more methods available. ### Reading a Multipart Email ```ruby mail = Mail.read('multipart_email') mail.multipart? #=> true mail.parts.length #=> 2 mail.body.preamble #=> "Text before the first part" mail.body.epilogue #=> "Text after the last part" mail.parts.map { |p| p.content_type } #=> ['text/plain', 'application/pdf'] mail.parts.map { |p| p.class } #=> [Mail::Message, Mail::Message] mail.parts[0].content_type_parameters #=> {'charset' => 'ISO-8859-1'} mail.parts[1].content_type_parameters #=> {'name' => 'my.pdf'} ``` Mail generates a tree of parts. Each message has many or no parts. Each part is another message which can have many or no parts. A message will only have parts if it is a multipart/mixed or multipart/related content type and has a boundary defined. ### Testing and Extracting Attachments ```ruby mail.attachments.each do | attachment | # Attachments is an AttachmentsList object containing a # number of Part objects if (attachment.content_type.start_with?('image/')) # extracting images for example... filename = attachment.filename begin File.open(images_dir + filename, "w+b", 0644) {|f| f.write attachment.decoded} rescue => e puts "Unable to save data for #{filename} because #{e.message}" end end end ``` ### Writing and Sending a Multipart/Alternative (HTML and Text) Email Mail makes some basic assumptions and makes doing the common thing as simple as possible.... (asking a lot from a mail library) ```ruby mail = Mail.deliver do to 'nicolas@test.lindsaar.net.au' from 'Mikel Lindsaar ' subject 'First multipart email sent with Mail' text_part do body 'This is plain text' end html_part do content_type 'text/html; charset=UTF-8' body '

This is HTML

' end end ``` Mail then delivers the email at the end of the block and returns the resulting Mail::Message object, which you can then inspect if you so desire... ``` puts mail.to_s #=> To: nicolas@test.lindsaar.net.au From: Mikel Lindsaar Subject: First multipart email sent with Mail Content-Type: multipart/alternative; boundary=--==_mimepart_4a914f0c911be_6f0f1ab8026659 Message-ID: <4a914f12ac7e_6f0f1ab80267d1@baci.local.mail> Date: Mon, 24 Aug 2009 00:15:46 +1000 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit ----==_mimepart_4a914f0c911be_6f0f1ab8026659 Content-ID: <4a914f12c8c4_6f0f1ab80268d6@baci.local.mail> Date: Mon, 24 Aug 2009 00:15:46 +1000 Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit This is plain text ----==_mimepart_4a914f0c911be_6f0f1ab8026659 Content-Type: text/html; charset=UTF-8 Content-ID: <4a914f12cf86_6f0f1ab802692c@baci.local.mail> Date: Mon, 24 Aug 2009 00:15:46 +1000 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit

This is HTML

----==_mimepart_4a914f0c911be_6f0f1ab8026659-- ``` Mail inserts the content transfer encoding, the mime version, the content-IDs and handles the content-type and boundary. Mail assumes that if your text in the body is only us-ascii, that your transfer encoding is 7bit and it is text/plain. You can override this by explicitly declaring it. ### Making Multipart/Alternate, Without a Block You don't have to use a block with the text and html part included, you can just do it declaratively. However, you need to add Mail::Parts to an email, not Mail::Messages. ```ruby mail = Mail.new do to 'nicolas@test.lindsaar.net.au' from 'Mikel Lindsaar ' subject 'First multipart email sent with Mail' end text_part = Mail::Part.new do body 'This is plain text' end html_part = Mail::Part.new do content_type 'text/html; charset=UTF-8' body '

This is HTML

' end mail.text_part = text_part mail.html_part = html_part ``` Results in the same email as done using the block form ### Getting Error Reports from an Email: ```ruby @mail = Mail.read('/path/to/bounce_message.eml') @mail.bounced? #=> true @mail.final_recipient #=> rfc822;mikel@dont.exist.com @mail.action #=> failed @mail.error_status #=> 5.5.0 @mail.diagnostic_code #=> smtp;550 Requested action not taken: mailbox unavailable @mail.retryable? #=> false ``` ### Attaching and Detaching Files You can just read the file off an absolute path, Mail will try to guess the mime_type and will encode the file in Base64 for you. ```ruby @mail = Mail.new @mail.add_file("/path/to/file.jpg") @mail.parts.first.attachment? #=> true @mail.parts.first.content_transfer_encoding.to_s #=> 'base64' @mail.attachments.first.mime_type #=> 'image/jpg' @mail.attachments.first.filename #=> 'file.jpg' @mail.attachments.first.decoded == File.read('/path/to/file.jpg') #=> true ``` Or You can pass in file_data and give it a filename, again, mail will try and guess the mime_type for you. ```ruby @mail = Mail.new @mail.attachments['myfile.pdf'] = File.read('path/to/myfile.pdf') @mail.parts.first.attachment? #=> true @mail.attachments.first.mime_type #=> 'application/pdf' @mail.attachments.first.decoded == File.read('path/to/myfile.pdf') #=> true ``` You can also override the guessed MIME media type if you really know better than mail (this should be rarely needed) ```ruby @mail = Mail.new @mail.attachments['myfile.pdf'] = { :mime_type => 'application/x-pdf', :content => File.read('path/to/myfile.pdf') } @mail.parts.first.mime_type #=> 'application/x-pdf' ``` Of course... Mail will round trip an attachment as well ```ruby @mail = Mail.new do to 'nicolas@test.lindsaar.net.au' from 'Mikel Lindsaar ' subject 'First multipart email sent with Mail' text_part do body 'Here is the attachment you wanted' end html_part do content_type 'text/html; charset=UTF-8' body '

Funky Title

Here is the attachment you wanted

' end add_file '/path/to/myfile.pdf' end @round_tripped_mail = Mail.new(@mail.encoded) @round_tripped_mail.attachments.length #=> 1 @round_tripped_mail.attachments.first.filename #=> 'myfile.pdf' ``` See "Testing and extracting attachments" above for more details. ## Using Mail with Testing or Spec'ing Libraries If mail is part of your system, you'll need a way to test it without actually sending emails, the TestMailer can do this for you. ```ruby require 'mail' => true Mail.defaults do delivery_method :test end => # Mail::TestMailer.deliveries => [] Mail.deliver do to 'mikel@me.com' from 'you@you.com' subject 'testing' body 'hello' end => # 1 Mail::TestMailer.deliveries.first => # [] ``` There is also a set of RSpec matchers stolen/inspired by Shoulda's ActionMailer matchers (you'll want to set delivery_method as above too): ```ruby Mail.defaults do delivery_method :test # in practice you'd do this in spec_helper.rb end describe "sending an email" do include Mail::Matchers before(:each) do Mail::TestMailer.deliveries.clear Mail.deliver do to ['mikel@me.com', 'mike2@me.com'] from 'you@you.com' subject 'testing' body 'hello' end end it { is_expected.to have_sent_email } # passes if any email at all was sent it { is_expected.to have_sent_email.from('you@you.com') } it { is_expected.to have_sent_email.to('mike1@me.com') } # can specify a list of recipients... it { is_expected.to have_sent_email.to(['mike1@me.com', 'mike2@me.com']) } # ...or chain recipients together it { is_expected.to have_sent_email.to('mike1@me.com').to('mike2@me.com') } it { is_expected.to have_sent_email.with_subject('testing') } it { is_expected.to have_sent_email.with_body('hello') } # Can match subject or body with a regex # (or anything that responds_to? :match) it { is_expected.to have_sent_email.matching_subject(/test(ing)?/) } it { is_expected.to have_sent_email.matching_body(/h(a|e)llo/) } # Can chain together modifiers # Note that apart from recipients, repeating a modifier overwrites old value. it { is_expected.to have_sent_email.from('you@you.com').to('mike1@me.com').matching_body(/hell/) # test for attachments # ... by specific attachment it { is_expected.to have_sent_email.with_attachments(my_attachment) } # ... or any attachment it { is_expected.to have_sent_email.with_attachments(any_attachment) } # ... or attachment with filename it { is_expected.to have_sent_email.with_attachments(an_attachment_with_filename('file.txt')) } # ... or attachment with mime_type it { is_expected.to have_sent_email.with_attachments(an_attachment_with_mime_type('application/pdf')) } # ... by array of attachments it { is_expected.to have_sent_email.with_attachments([my_attachment1, my_attachment2]) } #note that order is important #... by presence it { is_expected.to have_sent_email.with_any_attachments } #... or by absence it { is_expected.to have_sent_email.with_no_attachments } end ``` ## Excerpts from TREC Spam Corpus 2005 The spec fixture files in spec/fixtures/emails/from_trec_2005 are from the 2005 TREC Public Spam Corpus. They remain copyrighted under the terms of that project and license agreement. They are used in this project to verify and describe the development of this email parser implementation. http://plg.uwaterloo.ca/~gvcormac/treccorpus/ They are used as allowed by 'Permitted Uses, Clause 3': "Small excerpts of the information may be displayed to others or published in a scientific or technical context, solely for the purpose of describing the research and development and related issues." -- http://plg.uwaterloo.ca/~gvcormac/treccorpus/ ## License (The MIT License) Copyright (c) 2009-2016 Mikel Lindsaar Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. mail-2.8.1/Rakefile000066400000000000000000000010241436372131700141150ustar00rootroot00000000000000if !ENV["APPRAISAL_INITIALIZED"] && !ENV["CI"] ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __FILE__) end require 'rubygems' require 'bundler/setup' require 'rake/testtask' require 'rspec/core/rake_task' desc "Build a gem file" task :build do system "gem build mail.gemspec" end task :default => :spec RSpec::Core::RakeTask.new(:spec) do |t| t.ruby_opts = '-w' t.rspec_opts = %w(--backtrace --color) end # load custom rake tasks Dir["#{File.dirname(__FILE__)}/tasks/**/*.rake"].sort.each { |ext| load ext } mail-2.8.1/lib/000077500000000000000000000000001436372131700132215ustar00rootroot00000000000000mail-2.8.1/lib/mail.rb000066400000000000000000000027651436372131700145020ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # :doc: require 'date' require 'shellwords' require 'uri' require 'net/smtp' require 'mini_mime' require 'mail/version' require 'mail/indifferent_hash' require 'mail/multibyte' require 'mail/constants' require 'mail/utilities' require 'mail/configuration' @@autoloads = {} def self.register_autoload(name, path) @@autoloads[name] = path autoload(name, path) end # This runs through the autoload list and explictly requires them for you. # Useful when running mail in a threaded process. # # Usage: # # require 'mail' # Mail.eager_autoload! def self.eager_autoload! @@autoloads.each { |_,path| require(path) } end # Autoload mail send and receive classes. require 'mail/network' require 'mail/message' require 'mail/part' require 'mail/header' require 'mail/parts_list' require 'mail/attachments_list' require 'mail/body' require 'mail/field' require 'mail/field_list' require 'mail/envelope' # Autoload header field elements and transfer encodings. require 'mail/elements' require 'mail/encodings' require 'mail/encodings/base64' require 'mail/encodings/quoted_printable' require 'mail/encodings/unix_to_unix' require 'mail/matchers/has_sent_mail' require 'mail/matchers/attachment_matchers.rb' # Deprecated will be removed in 3.0 release require 'mail/check_delivery_params' # Finally... require all the Mail.methods require 'mail/mail' end mail-2.8.1/lib/mail/000077500000000000000000000000001436372131700141435ustar00rootroot00000000000000mail-2.8.1/lib/mail/attachments_list.rb000066400000000000000000000066311436372131700200440ustar00rootroot00000000000000# frozen_string_literal: true module Mail class AttachmentsList < Array def initialize(parts_list) @parts_list = parts_list @content_disposition_type = 'attachment' parts_list.map { |p| if p.mime_type == 'message/rfc822' Mail.new(p.body.encoded).attachments elsif p.parts.empty? p if p.attachment? else p.attachments end }.flatten.compact.each { |a| self << a } self end def inline @content_disposition_type = 'inline' self end # Returns the attachment by filename or at index. # # mail.attachments['test.png'] = File.read('test.png') # mail.attachments['test.jpg'] = File.read('test.jpg') # # mail.attachments['test.png'].filename #=> 'test.png' # mail.attachments[1].filename #=> 'test.jpg' def [](index_value) if index_value.is_a?(Integer) self.fetch(index_value) else self.select { |a| a.filename == index_value }.first end end def []=(name, value) encoded_name = Mail::Encodings.decode_encode name, :encode default_values = { :content_type => "#{set_mime_type(name)}; filename=\"#{encoded_name}\"", :content_transfer_encoding => "#{guess_encoding}", :content_disposition => "#{@content_disposition_type}; filename=\"#{encoded_name}\"" } if value.is_a?(Hash) if path = value.delete(:filename) value[:content] ||= File.open(path, 'rb') { |f| f.read } end default_values[:body] = value.delete(:content) if value[:content] default_values[:body] = value.delete(:data) if value[:data] encoding = value.delete(:transfer_encoding) || value.delete(:encoding) if encoding if Mail::Encodings.defined? encoding default_values[:content_transfer_encoding] = encoding else raise "Do not know how to handle Content Transfer Encoding #{encoding}, please choose either quoted-printable or base64" end end if value[:mime_type] default_values[:content_type] = value.delete(:mime_type) @mime_type = MiniMime.lookup_by_content_type(default_values[:content_type]) default_values[:content_transfer_encoding] ||= guess_encoding end hash = default_values.merge(value) else default_values[:body] = value hash = default_values end if hash[:body].respond_to? :force_encoding and hash[:body].respond_to? :valid_encoding? if not hash[:body].valid_encoding? and default_values[:content_transfer_encoding].casecmp('binary').zero? hash[:body] = hash[:body].dup if hash[:body].frozen? hash[:body].force_encoding("BINARY") end end attachment = Part.new(hash) attachment.add_content_id(hash[:content_id]) @parts_list << attachment end # Uses the mime type to try and guess the encoding, if it is a binary type, or unknown, then we # set it to binary, otherwise as set to plain text def guess_encoding if @mime_type && !@mime_type.binary? "7bit" else "binary" end end def set_mime_type(filename) filename = filename.encode(Encoding::UTF_8) if filename.respond_to?(:encode) @mime_type = MiniMime.lookup_by_filename(filename) @mime_type && @mime_type.content_type end end end mail-2.8.1/lib/mail/body.rb000066400000000000000000000225111436372131700154260ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # = Body # # The body is where the text of the email is stored. Mail treats the body # as a single object. The body itself has no information about boundaries # used in the MIME standard, it just looks at its content as either a single # block of text, or (if it is a multipart message) as an array of blocks of text. # # A body has to be told to split itself up into a multipart message by calling # #split with the correct boundary. This is because the body object has no way # of knowing what the correct boundary is for itself (there could be many # boundaries in a body in the case of a nested MIME text). # # Once split is called, Mail::Body will slice itself up on this boundary, # assigning anything that appears before the first part to the preamble, and # anything that appears after the closing boundary to the epilogue, then # each part gets initialized into a Mail::Part object. # # The boundary that is used to split up the Body is also stored in the Body # object for use on encoding itself back out to a string. You can # overwrite this if it needs to be changed. # # On encoding, the body will return the preamble, then each part joined by # the boundary, followed by a closing boundary string and then the epilogue. class Body def initialize(string = '') @boundary = nil @preamble = nil @epilogue = nil @charset = nil @part_sort_order = [ "text/plain", "text/enriched", "text/html", "multipart/alternative" ] @parts = Mail::PartsList.new if Utilities.blank?(string) @raw_source = '' else # Do join first incase we have been given an Array in Ruby 1.9 if string.respond_to?(:join) @raw_source = ::Mail::Utilities.to_crlf(string.join('')) elsif string.respond_to?(:to_s) @raw_source = ::Mail::Utilities.to_crlf(string.to_s) else raise "You can only assign a string or an object that responds_to? :join or :to_s to a body." end end @encoding = default_encoding set_charset end def init_with(coder) coder.map.each { |k, v| instance_variable_set(:"@#{k}", v) } @parts = Mail::PartsList.new(coder['parts']) end # Matches this body with another body. Also matches the decoded value of this # body with a string. # # Examples: # # body = Mail::Body.new('The body') # body == body #=> true # # body = Mail::Body.new('The body') # body == 'The body' #=> true # # body = Mail::Body.new("VGhlIGJvZHk=\n") # body.encoding = 'base64' # body == "The body" #=> true def ==(other) if other.class == String self.decoded == other else super end end # Accepts a string and performs a regular expression against the decoded text # # Examples: # # body = Mail::Body.new('The body') # body =~ /The/ #=> 0 # # body = Mail::Body.new("VGhlIGJvZHk=\n") # body.encoding = 'base64' # body =~ /The/ #=> 0 def =~(regexp) self.decoded =~ regexp end # Accepts a string and performs a regular expression against the decoded text # # Examples: # # body = Mail::Body.new('The body') # body.match(/The/) #=> # # # body = Mail::Body.new("VGhlIGJvZHk=\n") # body.encoding = 'base64' # body.match(/The/) #=> # def match(regexp) self.decoded.match(regexp) end # Accepts anything that responds to #to_s and checks if it's a substring of the decoded text # # Examples: # # body = Mail::Body.new('The body') # body.include?('The') #=> true # # body = Mail::Body.new("VGhlIGJvZHk=\n") # body.encoding = 'base64' # body.include?('The') #=> true def include?(other) self.decoded.include?(other.to_s) end # Allows you to set the sort order of the parts, overriding the default sort order. # Defaults to 'text/plain', then 'text/enriched', then 'text/html', then 'multipart/alternative' # with any other content type coming after. def set_sort_order(order) @part_sort_order = order end # Allows you to sort the parts according to the default sort order, or the sort order you # set with :set_sort_order. # # sort_parts! is also called from :encode, so there is no need for you to call this explicitly def sort_parts! @parts.each do |p| p.body.set_sort_order(@part_sort_order) p.body.sort_parts! end @parts.sort!(@part_sort_order) end def negotiate_best_encoding(message_encoding, allowed_encodings = nil) Mail::Encodings::TransferEncoding.negotiate(message_encoding, encoding, raw_source, allowed_encodings) end # Returns a body encoded using transfer_encoding. Multipart always uses an # identiy encoding (i.e. no encoding). # Calling this directly is not a good idea, but supported for compatibility # TODO: Validate that preamble and epilogue are valid for requested encoding def encoded(transfer_encoding = nil) if multipart? self.sort_parts! encoded_parts = parts.map { |p| p.encoded } ([preamble] + encoded_parts).join(crlf_boundary) + end_boundary + epilogue.to_s else dec = Mail::Encodings.get_encoding(encoding) enc = if Utilities.blank?(transfer_encoding) dec else negotiate_best_encoding(transfer_encoding) end if dec.nil? # Cannot decode, so skip normalization raw_source else # Decode then encode to normalize and allow transforming # from base64 to Q-P and vice versa decoded = dec.decode(raw_source) if defined?(Encoding) && charset && charset != "US-ASCII" decoded = decoded.encode(charset) decoded.force_encoding('BINARY') unless Encoding.find(charset).ascii_compatible? end enc.encode(decoded) end end end def decoded if !Encodings.defined?(encoding) raise UnknownEncodingType, "Don't know how to decode #{encoding}, please call #encoded and decode it yourself." else Encodings.get_encoding(encoding).decode(raw_source) end end def to_s decoded end def encoding(val = nil) if val self.encoding = val else @encoding end end def encoding=( val ) @encoding = if val == "text" || Utilities.blank?(val) default_encoding else val end end # Returns the raw source that the body was initialized with, without # any tampering attr_reader :raw_source # Returns parts of the body attr_reader :parts # Returns and sets the original character encoding attr_accessor :charset # Returns and sets the preamble as a string (any text that is before the first MIME boundary) attr_accessor :preamble # Returns and sets the epilogue as a string (any text that is after the last MIME boundary) attr_accessor :epilogue # Returns and sets the boundary used by the body # Allows you to change the boundary of this Body object attr_accessor :boundary # Returns true if there are parts defined in the body def multipart? true unless parts.empty? end def <<( val ) if @parts @parts << val else @parts = Mail::PartsList.new[val] end end def split!(boundary) self.boundary = boundary parts = extract_parts # Make the preamble equal to the preamble (if any) self.preamble = parts[0].to_s.strip # Make the epilogue equal to the epilogue (if any) self.epilogue = parts[-1].to_s.strip parts[1...-1].to_a.each { |part| @parts << Mail::Part.new(part) } self end def ascii_only? unless defined? @ascii_only @ascii_only = raw_source.ascii_only? end @ascii_only end def empty? !!raw_source.to_s.empty? end def default_encoding ascii_only? ? '7bit' : '8bit' end private # split parts by boundary, ignore first part if empty, append final part when closing boundary was missing def extract_parts parts_regex = / (?: # non-capturing group \A | # start of string OR \r\n # line break ) ( --#{Regexp.escape(boundary || "")} # boundary delimiter (?:--)? # with non-capturing optional closing ) (?=\s*$) # lookahead matching zero or more spaces followed by line-ending /x parts = raw_source.split(parts_regex).each_slice(2).to_a parts.each_with_index { |(part, _), index| parts.delete_at(index) if index > 0 && Utilities.blank?(part) } if parts.size > 1 final_separator = parts[-2][1] parts << [""] if final_separator != "--#{boundary}--" end parts.map(&:first) end def crlf_boundary "\r\n--#{boundary}\r\n" end def end_boundary "\r\n--#{boundary}--\r\n" end def set_charset @charset = ascii_only? ? 'US-ASCII' : nil end end end mail-2.8.1/lib/mail/check_delivery_params.rb000066400000000000000000000036241436372131700210200ustar00rootroot00000000000000# frozen_string_literal: true # # This whole class and associated specs is deprecated and will go away in the version 3 release of mail. module Mail module CheckDeliveryParams #:nodoc: class << self extend Gem::Deprecate def check(mail) envelope = Mail::SmtpEnvelope.new(mail) [ envelope.from, envelope.to, envelope.message ] end deprecate :check, 'Mail::SmtpEnvelope.new created in commit c106bebea066782a72e4f24dd37b532d95773df7', 2023, 6 def check_from(addr) mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com') Mail::SmtpEnvelope.new(mail).send(:validate_addr, 'From', addr) end deprecate :check_from, :none, 2023, 6 def check_to(addrs) mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com') Array(addrs).map do |addr| Mail::SmtpEnvelope.new(mail).send(:validate_addr, 'To', addr) end end deprecate :check_to, :none, 2023, 6 def check_addr(addr_name, addr) mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com') Mail::SmtpEnvelope.new(mail).send(:validate_addr, addr_name, addr) end deprecate :check_addr, :none, 2023, 6 def validate_smtp_addr(addr) if addr if addr.bytesize > 2048 yield 'may not exceed 2kB' end if /[\r\n]/ =~ addr yield 'may not contain CR or LF line breaks' end end addr end deprecate :validate_smtp_addr, :none, 2023, 6 def check_message(message) message = message.encoded if message.respond_to?(:encoded) if Utilities.blank?(message) raise ArgumentError, 'An encoded message is required to send an email' end message end deprecate :check_message, :none, 2023, 6 end end end mail-2.8.1/lib/mail/configuration.rb000066400000000000000000000033651436372131700173460ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true # # Thanks to Nicolas Fouché for this wrapper # require 'singleton' module Mail # The Configuration class is a Singleton used to hold the default # configuration for all Mail objects. # # Each new mail object gets a copy of these values at initialization # which can be overwritten on a per mail object basis. class Configuration include Singleton def initialize @delivery_method = nil @retriever_method = nil super end def delivery_method(method = nil, settings = {}) return @delivery_method if @delivery_method && method.nil? @delivery_method = lookup_delivery_method(method).new(settings) end def lookup_delivery_method(method) case method.is_a?(String) ? method.to_sym : method when nil Mail::SMTP when :smtp Mail::SMTP when :sendmail Mail::Sendmail when :exim Mail::Exim when :file Mail::FileDelivery when :smtp_connection Mail::SMTPConnection when :test Mail::TestMailer when :logger Mail::LoggerDelivery else method end end def retriever_method(method = nil, settings = {}) return @retriever_method if @retriever_method && method.nil? @retriever_method = lookup_retriever_method(method).new(settings) end def lookup_retriever_method(method) case method when nil Mail::POP3 when :pop3 Mail::POP3 when :imap Mail::IMAP when :test Mail::TestRetriever else method end end def param_encode_language(value = nil) value ? @encode_language = value : @encode_language ||= 'en' end end end mail-2.8.1/lib/mail/constants.rb000066400000000000000000000046501436372131700165110ustar00rootroot00000000000000# encoding: us-ascii # frozen_string_literal: true module Mail module Constants white_space = %Q|\x9\x20| text = %Q|\x1-\x8\xB\xC\xE-\x7f| field_name = %Q|\x21-\x39\x3b-\x7e| qp_safe = %Q|\x20-\x3c\x3e-\x7e| aspecial = %Q|()<>[]:;@\\,."| # RFC5322 tspecial = %Q|()<>@,;:\\"/[]?=| # RFC2045 sp = %Q| | control = %Q|\x00-\x1f\x7f-\xff| if control.respond_to?(:force_encoding) control = control.dup.force_encoding(Encoding::BINARY) end LAX_CRLF = /\r?\n/ WSP = /[#{white_space}]/ FWS = /#{LAX_CRLF}#{WSP}*/ UNFOLD_WS = /#{LAX_CRLF}(#{WSP})/m TEXT = /[#{text}]/ # + obs-text FIELD_NAME = /[#{field_name}]+/ FIELD_PREFIX = /\A(#{FIELD_NAME})/ FIELD_BODY = /.+/m FIELD_LINE = /^[#{field_name}]+:\s*.+$/ FIELD_SPLIT = /^(#{FIELD_NAME})\s*:\s*(#{FIELD_BODY})?$/ HEADER_LINE = /^([#{field_name}]+:\s*.+)$/ HEADER_SPLIT = /#{LAX_CRLF}(?!#{WSP})/ QP_UNSAFE = /[^#{qp_safe}]/ QP_SAFE = /[#{qp_safe}]/ CONTROL_CHAR = /[#{control}]/n ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{sp}]/n PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{sp}]/n ENCODED_VALUE = %r{ \=\? # literal =? ([^?]+) # \? # literal ? ([QB]) # either a "Q" or a "B" \? # literal ? .*? # lazily match all characters \?\= # literal ?= }mix # m is multi-line, i is case-insensitive, x is free-spacing FULL_ENCODED_VALUE = %r{ # Identical to ENCODED_VALUE but captures the whole rather than components of ( \=\? # literal =? [^?]+ # \? # literal ? [QB] # either a "Q" or a "B" \? # literal ? .*? # lazily match all characters \?\= # literal ?= ) }mix # m is multi-line, i is case-insensitive, x is free-spacing EMPTY = '' SPACE = ' ' UNDERSCORE = '_' HYPHEN = '-' COLON = ':' ASTERISK = '*' CRLF = "\r\n" CR = "\r" LF = "\n" CR_ENCODED = "=0D" LF_ENCODED = "=0A" CAPITAL_M = 'M' EQUAL_LF = "=\n" NULL_SENDER = '<>' Q_VALUES = ['Q','q'] B_VALUES = ['B','b'] end end mail-2.8.1/lib/mail/elements.rb000066400000000000000000000017001436372131700163020ustar00rootroot00000000000000# frozen_string_literal: true module Mail register_autoload :Address, 'mail/elements/address' register_autoload :AddressList, 'mail/elements/address_list' register_autoload :ContentDispositionElement, 'mail/elements/content_disposition_element' register_autoload :ContentLocationElement, 'mail/elements/content_location_element' register_autoload :ContentTransferEncodingElement, 'mail/elements/content_transfer_encoding_element' register_autoload :ContentTypeElement, 'mail/elements/content_type_element' register_autoload :DateTimeElement, 'mail/elements/date_time_element' register_autoload :EnvelopeFromElement, 'mail/elements/envelope_from_element' register_autoload :MessageIdsElement, 'mail/elements/message_ids_element' register_autoload :MimeVersionElement, 'mail/elements/mime_version_element' register_autoload :PhraseList, 'mail/elements/phrase_list' register_autoload :ReceivedElement, 'mail/elements/received_element' end mail-2.8.1/lib/mail/elements/000077500000000000000000000000001436372131700157575ustar00rootroot00000000000000mail-2.8.1/lib/mail/elements/address.rb000066400000000000000000000177221436372131700177420ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/address_lists_parser' require 'mail/constants' require 'mail/utilities' module Mail # Mail::Address handles all email addresses in Mail. It takes an email address string # and parses it, breaking it down into its component parts and allowing you to get the # address, comments, display name, name, local part, domain part and fully formatted # address. # # Mail::Address requires a correctly formatted email address per RFC2822 or RFC822. It # handles all obsolete versions including obsolete domain routing on the local part. # # a = Address.new('Mikel Lindsaar (My email address) ') # a.format #=> 'Mikel Lindsaar (My email address)' # a.address #=> 'mikel@test.lindsaar.net' # a.display_name #=> 'Mikel Lindsaar' # a.local #=> 'mikel' # a.domain #=> 'test.lindsaar.net' # a.comments #=> ['My email address'] # a.to_s #=> 'Mikel Lindsaar (My email address)' class Address def initialize(value = nil) if value.nil? @parsed = false @data = nil else parse(value) end end # Returns the raw input of the passed in string, this is before it is passed # by the parser. def raw @data.raw end # Returns a correctly formatted address for the email going out. If given # an incorrectly formatted address as input, Mail::Address will do its best # to format it correctly. This includes quoting display names as needed and # putting the address in angle brackets etc. # # a = Address.new('Mikel Lindsaar (My email address) ') # a.format #=> 'Mikel Lindsaar (My email address)' def format(output_type = :decode) parse unless @parsed if @data.nil? Constants::EMPTY elsif name = display_name(output_type) [Utilities.quote_phrase(name), "<#{address(output_type)}>", format_comments].compact.join(Constants::SPACE) elsif a = address(output_type) [a, format_comments].compact.join(Constants::SPACE) else raw end end # Returns the address that is in the address itself. That is, the # local@domain string, without any angle brackets or the like. # # a = Address.new('Mikel Lindsaar (My email address) ') # a.address #=> 'mikel@test.lindsaar.net' def address(output_type = :decode) parse unless @parsed if d = domain(output_type) "#{local(output_type)}@#{d}" else local(output_type) end end # Provides a way to assign an address to an already made Mail::Address object. # # a = Address.new # a.address = 'Mikel Lindsaar (My email address) ' # a.address #=> 'mikel@test.lindsaar.net' def address=(value) parse(value) end # Returns the display name of the email address passed in. # # a = Address.new('Mikel Lindsaar (My email address) ') # a.display_name #=> 'Mikel Lindsaar' def display_name(output_type = :decode) parse unless @parsed @display_name ||= get_display_name Encodings.decode_encode(@display_name.to_s, output_type) if @display_name end # Provides a way to assign a display name to an already made Mail::Address object. # # a = Address.new # a.address = 'mikel@test.lindsaar.net' # a.display_name = 'Mikel Lindsaar' # a.format #=> 'Mikel Lindsaar ' def display_name=( str ) @display_name = str.nil? ? nil : str.dup # in case frozen end # Returns the local part (the left hand side of the @ sign in the email address) of # the address # # a = Address.new('Mikel Lindsaar (My email address) ') # a.local #=> 'mikel' def local(output_type = :decode) parse unless @parsed Encodings.decode_encode("#{@data.obs_domain_list}#{get_local.strip}", output_type) if get_local end # Returns the domain part (the right hand side of the @ sign in the email address) of # the address # # a = Address.new('Mikel Lindsaar (My email address) ') # a.domain #=> 'test.lindsaar.net' def domain(output_type = :decode) parse unless @parsed Encodings.decode_encode(strip_all_comments(get_domain), output_type) if get_domain end # Returns an array of comments that are in the email, or nil if there # are no comments # # a = Address.new('Mikel Lindsaar (My email address) ') # a.comments #=> ['My email address'] # # b = Address.new('Mikel Lindsaar ') # b.comments #=> nil def comments parse unless @parsed comments = get_comments if comments.nil? || comments.none? nil else comments.map { |c| c.squeeze(Constants::SPACE) } end end # Sometimes an address will not have a display name, but might have the name # as a comment field after the address. This returns that name if it exists. # # a = Address.new('mikel@test.lindsaar.net (Mikel Lindsaar)') # a.name #=> 'Mikel Lindsaar' def name parse unless @parsed get_name end # Returns the format of the address, or returns nothing # # a = Address.new('Mikel Lindsaar (My email address) ') # a.format #=> 'Mikel Lindsaar (My email address)' def to_s parse unless @parsed format end # Shows the Address object basic details, including the Address # a = Address.new('Mikel (My email) ') # a.inspect #=> "# (My email)| >" def inspect parse unless @parsed "#<#{self.class}:#{self.object_id} Address: |#{to_s}| >" end def encoded format :encode end def decoded format :decode end def group @data && @data.group end private def parse(value = nil) @parsed = true @data = nil case value when Mail::Parsers::AddressListsParser::AddressStruct @data = value when String unless Utilities.blank?(value) address_list = Mail::Parsers::AddressListsParser.parse(value) @data = address_list.addresses.first end end end def strip_all_comments(string) unless Utilities.blank?(comments) comments.each do |comment| string = string.gsub("(#{comment})", Constants::EMPTY) end end string.strip end def strip_domain_comments(value) unless Utilities.blank?(comments) comments.each do |comment| if @data.domain && @data.domain.include?("(#{comment})") value = value.gsub("(#{comment})", Constants::EMPTY) end end end value.to_s.strip end def get_display_name if @data && @data.display_name str = strip_all_comments(@data.display_name.to_s) elsif @data && @data.comments && @data.domain str = strip_domain_comments(format_comments) end str unless Utilities.blank?(str) end def get_name if display_name str = display_name elsif comments str = "(#{comments.join(Constants::SPACE).squeeze(Constants::SPACE)})" end Utilities.unparen(str) unless Utilities.blank?(str) end def format_comments if comments comment_text = comments.map {|c| Utilities.escape_paren(c) }.join(Constants::SPACE).squeeze(Constants::SPACE) @format_comments ||= "(#{comment_text})" else nil end end def get_local @data && @data.local end def get_domain @data && @data.domain end def get_comments @data && @data.comments end end end mail-2.8.1/lib/mail/elements/address_list.rb000066400000000000000000000023441436372131700207670ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/address_lists_parser' module Mail class AddressList #:nodoc: attr_reader :addresses, :group_names # Mail::AddressList is the class that parses To, From and other address fields from # emails passed into Mail. # # AddressList provides a way to query the groups and mailbox lists of the passed in # string. # # It can supply all addresses in an array, or return each address as an address object. # # Mail::AddressList requires a correctly formatted group or mailbox list per RFC2822 or # RFC822. It also handles all obsolete versions in those RFCs. # # list = 'ada@test.lindsaar.net, My Group: mikel@test.lindsaar.net, Bob ;' # a = AddressList.new(list) # a.addresses #=> [# ["My Group"] def initialize(string) address_list = Parsers::AddressListsParser.parse(string) @addresses = address_list.addresses.map { |a| Address.new(a) } @group_names = address_list.group_names end def addresses_grouped_by_group addresses.select(&:group).group_by(&:group) end end end mail-2.8.1/lib/mail/elements/content_disposition_element.rb000066400000000000000000000010331436372131700241100ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/content_disposition_parser' module Mail class ContentDispositionElement #:nodoc: attr_reader :disposition_type, :parameters def initialize(string) content_disposition = Mail::Parsers::ContentDispositionParser.parse(cleaned(string)) @disposition_type = content_disposition.disposition_type @parameters = content_disposition.parameters end private def cleaned(string) string =~ /(.+);\s*$/ ? $1 : string end end end mail-2.8.1/lib/mail/elements/content_location_element.rb000066400000000000000000000005331436372131700233600ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/content_location_parser' module Mail class ContentLocationElement #:nodoc: attr_reader :location def initialize(string) @location = Mail::Parsers::ContentLocationParser.parse(string).location end def to_s(*args) location.to_s end end end mail-2.8.1/lib/mail/elements/content_transfer_encoding_element.rb000066400000000000000000000005031436372131700252370ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/content_transfer_encoding_parser' module Mail class ContentTransferEncodingElement #:nodoc: attr_reader :encoding def initialize(string) @encoding = Mail::Parsers::ContentTransferEncodingParser.parse(string).encoding end end end mail-2.8.1/lib/mail/elements/content_type_element.rb000066400000000000000000000010751436372131700225330ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/content_type_parser' module Mail class ContentTypeElement #:nodoc: attr_reader :main_type, :sub_type, :parameters def initialize(string) content_type = Mail::Parsers::ContentTypeParser.parse(cleaned(string)) @main_type = content_type.main_type @sub_type = content_type.sub_type @parameters = content_type.parameters end private def cleaned(string) if string =~ /;\s*$/ $` else string end end end end mail-2.8.1/lib/mail/elements/date_time_element.rb000066400000000000000000000005631436372131700217540ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/date_time_parser' module Mail class DateTimeElement #:nodoc: attr_reader :date_string, :time_string def initialize(string) date_time = Mail::Parsers::DateTimeParser.parse(string) @date_string = date_time.date_string @time_string = date_time.time_string end end end mail-2.8.1/lib/mail/elements/envelope_from_element.rb000066400000000000000000000020341436372131700226540ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/envelope_from_parser' require 'date' module Mail class EnvelopeFromElement #:nodoc: attr_reader :date_time, :address def initialize(string) envelope_from = Mail::Parsers::EnvelopeFromParser.parse(string) @address = envelope_from.address @date_time = ::DateTime.parse(envelope_from.ctime_date) if envelope_from.ctime_date end # RFC 4155: # a timestamp indicating the UTC date and time when the message # was originally received, conformant with the syntax of the # traditional UNIX 'ctime' output sans timezone (note that the # use of UTC precludes the need for a timezone indicator); def formatted_date_time if date_time if date_time.respond_to?(:ctime) date_time.ctime else date_time.strftime '%a %b %e %T %Y' end end end def to_s if date_time "#{address} #{formatted_date_time}" else address end end end end mail-2.8.1/lib/mail/elements/message_ids_element.rb000066400000000000000000000011121436372131700222730ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/message_ids_parser' require 'mail/utilities' module Mail class MessageIdsElement #:nodoc: def self.parse(string) new(string).tap(&:message_ids) end attr_reader :message_ids def initialize(string) @message_ids = parse(string) end def message_id message_ids.first end private def parse(string) if Utilities.blank? string [] else Mail::Parsers::MessageIdsParser.parse(string).message_ids end end end end mail-2.8.1/lib/mail/elements/mime_version_element.rb000066400000000000000000000005411436372131700225110ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/mime_version_parser' module Mail class MimeVersionElement #:nodoc: attr_reader :major, :minor def initialize(string) mime_version = Mail::Parsers::MimeVersionParser.parse(string) @major = mime_version.major @minor = mime_version.minor end end end mail-2.8.1/lib/mail/elements/phrase_list.rb000066400000000000000000000006461436372131700206270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/phrase_lists_parser' require 'mail/utilities' module Mail class PhraseList #:nodoc: attr_reader :phrases def initialize(string) @phrases = if Utilities.blank? string [] else Mail::Parsers::PhraseListsParser.parse(string).phrases.map { |p| Mail::Utilities.unquote(p) } end end end end mail-2.8.1/lib/mail/elements/received_element.rb000066400000000000000000000016031436372131700216030ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/parsers/received_parser' require 'mail/utilities' require 'date' module Mail class ReceivedElement #:nodoc: attr_reader :info, :date_time def initialize(string) if Utilities.blank? string @date_time = nil @info = nil else received = Mail::Parsers::ReceivedParser.parse(string) @date_time = datetime_for(received) @info = received.info end end def to_s(*args) "#{info}; #{date_time.to_s(*args)}" end private def datetime_for(received) ::DateTime.parse("#{received.date} #{received.time}") rescue ArgumentError => e raise e unless e.message == 'invalid date' warn "WARNING: Invalid date field for received element (#{received.date} #{received.time}): #{e.class}: #{e.message}" nil end end end mail-2.8.1/lib/mail/encodings.rb000066400000000000000000000231001436372131700164350ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # Raised when attempting to decode an unknown encoding type class UnknownEncodingType < StandardError #:nodoc: end module Encodings include Mail::Constants extend Mail::Utilities @transfer_encodings = {} # Register transfer encoding # # Example # # Encodings.register "base64", Mail::Encodings::Base64 def Encodings.register(name, cls) @transfer_encodings[get_name(name)] = cls end # Is the encoding we want defined? # # Example: # # Encodings.defined?(:base64) #=> true def Encodings.defined?(name) @transfer_encodings.include? get_name(name) end # Gets a defined encoding type, QuotedPrintable or Base64 for now. # # Each encoding needs to be defined as a Mail::Encodings::ClassName for # this to work, allows us to add other encodings in the future. # # Example: # # Encodings.get_encoding(:base64) #=> Mail::Encodings::Base64 def Encodings.get_encoding(name) @transfer_encodings[get_name(name)] end def Encodings.get_all @transfer_encodings.values end def Encodings.get_name(name) underscoreize(name).downcase end def Encodings.transcode_charset(str, from_charset, to_charset = 'UTF-8') if from_charset Utilities.transcode_charset str, from_charset, to_charset else str end end # Encodes a parameter value using URI Escaping, note the language field 'en' can # be set using Mail::Configuration, like so: # # Mail.defaults do # param_encode_language 'jp' # end # # The character set used for encoding will be the encoding on the string passed in. # # Example: # # Mail::Encodings.param_encode("This is fun") #=> "us-ascii'en'This%20is%20fun" def Encodings.param_encode(str) case when str.ascii_only? && str =~ TOKEN_UNSAFE %Q{"#{str}"} when str.ascii_only? str else Utilities.param_encode(str) end end # Decodes a parameter value using URI Escaping. # # Example: # # Mail::Encodings.param_decode("This%20is%20fun", 'us-ascii') #=> "This is fun" # # str = Mail::Encodings.param_decode("This%20is%20fun", 'iso-8559-1') # str.encoding #=> 'ISO-8859-1' ## Only on Ruby 1.9 # str #=> "This is fun" def Encodings.param_decode(str, encoding) Utilities.param_decode(str, encoding) end # Decodes or encodes a string as needed for either Base64 or QP encoding types in # the =??[QB]??=" format. # # The output type needs to be :decode to decode the input string or :encode to # encode the input string. The character set used for encoding will be the # encoding on the string passed in. # # On encoding, will only send out Base64 encoded strings. def Encodings.decode_encode(str, output_type) case when output_type == :decode Encodings.value_decode(str) else if str.ascii_only? str else Encodings.b_value_encode(str, str.encoding) end end end # Decodes a given string as Base64 or Quoted Printable, depending on what # type it is. # # String has to be of the format =??[QB]??= def Encodings.value_decode(str) # Optimization: If there's no encoded-words in the string, just return it return str unless str =~ ENCODED_VALUE lines = collapse_adjacent_encodings(str) # Split on white-space boundaries with capture, so we capture the white-space as well lines.each do |line| line.gsub!(ENCODED_VALUE) do |string| case $2 when *B_VALUES then b_value_decode(string) when *Q_VALUES then q_value_decode(string) end end end.join("") end # Takes an encoded string of the format =??[QB]??= def Encodings.unquote_and_convert_to(str, to_encoding) output = value_decode( str ).to_s # output is already converted to UTF-8 if 'utf8' == to_encoding.to_s.downcase.gsub("-", "") output elsif to_encoding begin output.encode(to_encoding) rescue Errno::EINVAL # the 'from' parameter specifies a charset other than what the text # actually is...not much we can do in this case but just return the # unconverted text. # # Ditto if either parameter represents an unknown charset, like # X-UNKNOWN. output end else output end end def Encodings.address_encode(address, charset = 'utf-8') if address.is_a?(Array) address.compact.map { |a| Encodings.address_encode(a, charset) }.join(", ") elsif address encode_non_usascii(address, charset) end end def Encodings.encode_non_usascii(address, charset) return address if address.ascii_only? or charset.nil? # Encode all strings embedded inside of quotes address = address.gsub(/("[^"]*[^\/]")/) { |s| Encodings.b_value_encode(unquote(s), charset) } # Then loop through all remaining items and encode as needed tokens = address.split(/\s/) map_with_index(tokens) do |word, i| if word.ascii_only? word else previous_non_ascii = i>0 && tokens[i-1] && !tokens[i-1].ascii_only? if previous_non_ascii #why are we adding an extra space here? word = " #{word}" end Encodings.b_value_encode(word, charset) end end.join(' ') end # Encode a string with Base64 Encoding and returns it ready to be inserted # as a value for a field, that is, in the =??B??= format # # Example: # # Encodings.b_value_encode('This is あ string', 'UTF-8') # #=> "=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=" def Encodings.b_value_encode(string, encoding = nil) if string.to_s.ascii_only? string else Encodings.each_base64_chunk_byterange(string, 60).map do |chunk| str, encoding = Utilities.b_value_encode(chunk, encoding) "=?#{encoding}?B?#{str.chomp}?=" end.join(" ") end end # Encode a string with Quoted-Printable Encoding and returns it ready to be inserted # as a value for a field, that is, in the =??Q??= format # # Example: # # Encodings.q_value_encode('This is あ string', 'UTF-8') # #=> "=?UTF-8?Q?This_is_=E3=81=82_string?=" def Encodings.q_value_encode(encoded_str, encoding = nil) return encoded_str if encoded_str.to_s.ascii_only? string, encoding = Utilities.q_value_encode(encoded_str, encoding) string.gsub!("=\r\n", '') # We already have limited the string to the length we want map_lines(string) do |str| "=?#{encoding}?Q?#{str.chomp.gsub(/ /, '_')}?=" end.join(" ") end private # Decodes a Base64 string from the "=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=" format # # Example: # # Encodings.b_value_decode("=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=") # #=> 'This is あ string' def Encodings.b_value_decode(str) Utilities.b_value_decode(str) end # Decodes a Quoted-Printable string from the "=?UTF-8?Q?This_is_=E3=81=82_string?=" format # # Example: # # Encodings.q_value_decode("=?UTF-8?Q?This_is_=E3=81=82_string?=") # #=> 'This is あ string' def Encodings.q_value_decode(str) Utilities.q_value_decode(str) end # Gets the encoding type (Q or B) from the string. def Encodings.value_encoding_from_string(str) str[ENCODED_VALUE, 1] end # Split header line into proper encoded and unencoded parts. # # String has to be of the format =??[QB]??= # # Omit unencoded space after an encoded-word. def Encodings.collapse_adjacent_encodings(str) results = [] last_encoded = nil # Track whether to preserve or drop whitespace lines = str.split(FULL_ENCODED_VALUE) lines.each_slice(2) do |unencoded, encoded| if last_encoded = encoded if !Utilities.blank?(unencoded) || (!last_encoded && unencoded != EMPTY) results << unencoded end results << encoded else results << unencoded end end results end # Partition the string into bounded-size chunks without splitting # multibyte characters. def Encodings.each_base64_chunk_byterange(str, max_bytesize_per_base64_chunk, &block) raise "size per chunk must be multiple of 4" if (max_bytesize_per_base64_chunk % 4).nonzero? if block_given? max_bytesize = ((3 * max_bytesize_per_base64_chunk) / 4.0).floor each_chunk_byterange(str, max_bytesize, &block) else enum_for :each_base64_chunk_byterange, str, max_bytesize_per_base64_chunk end end # Partition the string into bounded-size chunks without splitting # multibyte characters. def Encodings.each_chunk_byterange(str, max_bytesize_per_chunk) return enum_for(:each_chunk_byterange, str, max_bytesize_per_chunk) unless block_given? offset = 0 chunksize = 0 str.each_char do |chr| charsize = chr.bytesize if chunksize + charsize > max_bytesize_per_chunk yield Utilities.string_byteslice(str, offset, chunksize) offset += chunksize chunksize = charsize else chunksize += charsize end end yield Utilities.string_byteslice(str, offset, chunksize) end end end mail-2.8.1/lib/mail/encodings/000077500000000000000000000000001436372131700161145ustar00rootroot00000000000000mail-2.8.1/lib/mail/encodings/7bit.rb000066400000000000000000000012231436372131700173040ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/8bit' module Mail module Encodings # 7bit and 8bit are equivalent. 7bit encoding is for text only. class SevenBit < EightBit NAME = '7bit' PRIORITY = 1 Encodings.register(NAME, self) def self.decode(str) ::Mail::Utilities.binary_unsafe_to_lf str end def self.encode(str) ::Mail::Utilities.binary_unsafe_to_crlf str end # Per RFC 2045 2.7. 7bit Data, No octets with decimal values greater than 127 are allowed. def self.compatible_input?(str) str.ascii_only? && super end end end end mail-2.8.1/lib/mail/encodings/8bit.rb000066400000000000000000000006641436372131700173150ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/binary' module Mail module Encodings class EightBit < Binary NAME = '8bit' PRIORITY = 4 Encodings.register(NAME, self) # Per RFC 2821 4.5.3.1, SMTP lines may not be longer than 1000 octets including the . def self.compatible_input?(str) !str.lines.find { |line| line.bytesize > 998 } end end end end mail-2.8.1/lib/mail/encodings/base64.rb000066400000000000000000000015001436372131700175210ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/7bit' module Mail module Encodings # Base64 encoding handles binary content at the cost of 4 output bytes # per input byte. class Base64 < SevenBit NAME = 'base64' PRIORITY = 3 Encodings.register(NAME, self) def self.can_encode?(enc) true end def self.decode(str) Utilities.decode_base64(str) end def self.encode(str) ::Mail::Utilities.binary_unsafe_to_crlf(Utilities.encode_base64(str)) end # 3 bytes in -> 4 bytes out def self.cost(str) 4.0 / 3 end # Ruby Base64 inserts newlines automatically, so it doesn't exceed # SMTP line length limits. def self.compatible_input?(str) true end end end end mail-2.8.1/lib/mail/encodings/binary.rb000066400000000000000000000003561436372131700177310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/identity' module Mail module Encodings class Binary < Identity NAME = 'binary' PRIORITY = 5 Encodings.register(NAME, self) end end end mail-2.8.1/lib/mail/encodings/identity.rb000066400000000000000000000007341436372131700202760ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/transfer_encoding' module Mail module Encodings # Identity encodings do no encoding/decoding and have a fixed cost: # 1 byte in -> 1 byte out. class Identity < TransferEncoding #:nodoc: def self.decode(str) str end def self.encode(str) str end # 1 output byte per input byte. def self.cost(str) 1.0 end end end end mail-2.8.1/lib/mail/encodings/quoted_printable.rb000066400000000000000000000023011436372131700217760ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/encodings/7bit' module Mail module Encodings class QuotedPrintable < SevenBit NAME='quoted-printable' PRIORITY = 2 def self.can_encode?(enc) EightBit.can_encode? enc end # Decode the string from Quoted-Printable. Cope with hard line breaks # that were incorrectly encoded as hex instead of literal CRLF. def self.decode(str) ::Mail::Utilities.to_lf ::Mail::Utilities.to_crlf(str).gsub(/(?:=0D=0A|=0D|=0A)\r\n/, "\r\n").unpack("M*").first end def self.encode(str) ::Mail::Utilities.to_crlf [::Mail::Utilities.to_lf(str)].pack("M") end def self.cost(str) # These bytes probably do not need encoding c = str.count("\x9\xA\xD\x20-\x3C\x3E-\x7E") # Everything else turns into =XX where XX is a # two digit hex number (taking 3 bytes) total = (str.bytesize - c)*3 + c total.to_f/str.bytesize end # QP inserts newlines automatically and cannot violate the SMTP spec. def self.compatible_input?(str) true end private Encodings.register(NAME, self) end end end mail-2.8.1/lib/mail/encodings/transfer_encoding.rb000066400000000000000000000044211436372131700221340ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail module Encodings class TransferEncoding NAME = '' PRIORITY = -1 # And encoding's superclass can always transport it since the # class hierarchy is arranged e.g. Base64 < 7bit < 8bit < Binary. def self.can_transport?(enc) enc && enc <= self end # Override in subclasses to indicate that they can encode text # that couldn't be directly transported, e.g. Base64 has 7bit output, # but it can encode binary. def self.can_encode?(enc) can_transport? enc end def self.cost(str) raise "Unimplemented" end def self.compatible_input?(str) true end def self.to_s self::NAME end def self.negotiate(message_encoding, source_encoding, str, allowed_encodings = nil) message_encoding = Encodings.get_encoding(message_encoding) || Encodings.get_encoding('8bit') source_encoding = Encodings.get_encoding(source_encoding) if message_encoding && source_encoding && message_encoding.can_transport?(source_encoding) && source_encoding.compatible_input?(str) source_encoding else renegotiate(message_encoding, source_encoding, str, allowed_encodings) end end def self.renegotiate(message_encoding, source_encoding, str, allowed_encodings = nil) encodings = Encodings.get_all.select do |enc| (allowed_encodings.nil? || allowed_encodings.include?(enc)) && message_encoding.can_transport?(enc) && enc.can_encode?(source_encoding) end lowest_cost(str, encodings) end def self.lowest_cost(str, encodings) best = nil best_cost = nil encodings.each do |enc| # If the current choice cannot be transported safely, give priority # to other choices but allow it to be used as a fallback. this_cost = enc.cost(str) if enc.compatible_input?(str) if !best_cost || (this_cost && this_cost < best_cost) best_cost = this_cost best = enc elsif this_cost == best_cost best = enc if enc::PRIORITY < best::PRIORITY end end best end end end end mail-2.8.1/lib/mail/encodings/unix_to_unix.rb000066400000000000000000000006541436372131700211760ustar00rootroot00000000000000# frozen_string_literal: true module Mail module Encodings class UnixToUnix < TransferEncoding NAME = "x-uuencode" def self.decode(str) str.sub(/\Abegin \d+ [^\n]*\n/, '').unpack('u').first end def self.encode(str) [str].pack("u") end Encodings.register(NAME, self) Encodings.register("uuencode", self) Encodings.register("x-uue", self) end end end mail-2.8.1/lib/mail/envelope.rb000066400000000000000000000010751436372131700163100ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true # # = Mail Envelope # # The Envelope class provides a field for the first line in an # mbox file, that looks like "From mikel@test.lindsaar.net DATETIME" # # This envelope class reads that line, and turns it into an # Envelope.from and Envelope.date for your use. module Mail class Envelope < NamedStructuredField NAME = 'Envelope-From' def element @element ||= Mail::EnvelopeFromElement.new(value) end def from element.address end def date element.date_time end end end mail-2.8.1/lib/mail/field.rb000066400000000000000000000212651436372131700155610ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/fields' require 'mail/constants' # encoding: utf-8 module Mail # Provides a single class to call to create a new structured or unstructured # field. Works out per RFC what field of field it is being given and returns # the correct field of class back on new. # # ===Per RFC 2822 # # 2.2. Header Fields # # Header fields are lines composed of a field name, followed by a colon # (":"), followed by a field body, and terminated by CRLF. A field # name MUST be composed of printable US-ASCII characters (i.e., # characters that have values between 33 and 126, inclusive), except # colon. A field body may be composed of any US-ASCII characters, # except for CR and LF. However, a field body may contain CRLF when # used in header "folding" and "unfolding" as described in section # 2.2.3. All field bodies MUST conform to the syntax described in # sections 3 and 4 of this standard. # class Field include Comparable STRUCTURED_FIELDS = %w[ bcc cc content-description content-disposition content-id content-location content-transfer-encoding content-type date from in-reply-to keywords message-id mime-version received references reply-to resent-bcc resent-cc resent-date resent-from resent-message-id resent-sender resent-to return-path sender to ] KNOWN_FIELDS = STRUCTURED_FIELDS + ['comments', 'subject'] FIELDS_MAP = { "to" => ToField, "cc" => CcField, "bcc" => BccField, "message-id" => MessageIdField, "in-reply-to" => InReplyToField, "references" => ReferencesField, "subject" => SubjectField, "comments" => CommentsField, "keywords" => KeywordsField, "date" => DateField, "from" => FromField, "sender" => SenderField, "reply-to" => ReplyToField, "resent-date" => ResentDateField, "resent-from" => ResentFromField, "resent-sender" => ResentSenderField, "resent-to" => ResentToField, "resent-cc" => ResentCcField, "resent-bcc" => ResentBccField, "resent-message-id" => ResentMessageIdField, "return-path" => ReturnPathField, "received" => ReceivedField, "mime-version" => MimeVersionField, "content-transfer-encoding" => ContentTransferEncodingField, "content-description" => ContentDescriptionField, "content-disposition" => ContentDispositionField, "content-type" => ContentTypeField, "content-id" => ContentIdField, "content-location" => ContentLocationField, } FIELD_NAME_MAP = FIELDS_MAP.inject({}) do |map, (field, field_klass)| map.update(field => field_klass::NAME) end # Generic Field Exception class FieldError < StandardError end # Raised when a parsing error has occurred (ie, a StructuredField has tried # to parse a field that is invalid or improperly written) class ParseError < FieldError #:nodoc: attr_accessor :element, :value, :reason def initialize(element, value, reason) @element = element @value = to_utf8(value) @reason = to_utf8(reason) super("#{@element} can not parse |#{@value}|: #{@reason}") end private def to_utf8(text) if text.respond_to?(:force_encoding) text.dup.force_encoding(Encoding::UTF_8) else text end end end class NilParseError < ParseError #:nodoc: def initialize(element) super element, nil, 'nil is invalid' end end class IncompleteParseError < ParseError #:nodoc: def initialize(element, original_text, unparsed_index) parsed_text = to_utf8(original_text[0...unparsed_index]) super element, original_text, "Only able to parse up to #{parsed_text.inspect}" end end # Raised when attempting to set a structured field's contents to an invalid syntax class SyntaxError < FieldError #:nodoc: end class << self # Parse a field from a raw header line: # # Mail::Field.parse("field-name: field data") # # => # def parse(field, charset = 'utf-8') name, value = split(field) if name && value new name, value, charset end end def split(raw_field) #:nodoc: if raw_field.index(Constants::COLON) name, value = raw_field.split(Constants::COLON, 2) name.rstrip! if name =~ /\A#{Constants::FIELD_NAME}\z/ [ name.rstrip, value.strip ] else Kernel.warn "WARNING: Ignoring unparsable header #{raw_field.inspect}: invalid header name syntax: #{name.inspect}" nil end else raw_field.strip end rescue => error warn "WARNING: Ignoring unparsable header #{raw_field.inspect}: #{error.class}: #{error.message}" nil end def field_class_for(name) #:nodoc: FIELDS_MAP[name.to_s.downcase] end end attr_reader :unparsed_value # Create a field by name and optional value: # # Mail::Field.new("field-name", "value") # # => # # # Values that aren't strings or arrays are coerced to Strings with `#to_s`. # # Mail::Field.new("field-name", 1234) # # => # # # Mail::Field.new('content-type', ['text', 'plain', {:charset => 'UTF-8'}]) # # => # def initialize(name, value = nil, charset = 'utf-8') case when name.index(Constants::COLON) raise ArgumentError, 'Passing an unparsed header field to Mail::Field.new is not supported in Mail 2.8.0+. Use Mail::Field.parse instead.' when Utilities.blank?(value) @name = name @unparsed_value = nil @charset = charset else @name = name @unparsed_value = value @charset = charset end @name = FIELD_NAME_MAP[@name.to_s.downcase] || @name end def field=(field) @field = field end def field @field ||= create_field(@name, @unparsed_value, @charset) end def name @name end def value field.value end def value=(val) @field = create_field(name, val, @charset) end def to_s field.to_s end def inspect "#<#{self.class.name} 0x#{(object_id * 2).to_s(16)} #{instance_variables.map do |ivar| "#{ivar}=#{instance_variable_get(ivar).inspect}" end.join(" ")}>" end def same(other) other.kind_of?(self.class) && Utilities.match_to_s(other.name, name) end def ==(other) same(other) && Utilities.match_to_s(other.value, value) end def responsible_for?(field_name) name.to_s.casecmp(field_name.to_s) == 0 end def <=>(other) field_order_id <=> other.field_order_id end def field_order_id @field_order_id ||= FIELD_ORDER_LOOKUP.fetch(self.name.to_s.downcase, 100) end def method_missing(name, *args, &block) field.send(name, *args, &block) end def respond_to_missing?(method_name, include_private) field.respond_to?(method_name, include_private) || super end FIELD_ORDER_LOOKUP = Hash[%w[ return-path received resent-date resent-from resent-sender resent-to resent-cc resent-bcc resent-message-id date from sender reply-to to cc bcc message-id in-reply-to references subject comments keywords mime-version content-type content-transfer-encoding content-location content-disposition content-description ].each_with_index.to_a] private def create_field(name, value, charset) parse_field(name, value, charset) rescue Mail::Field::ParseError => e field = Mail::UnstructuredField.new(name, value) field.errors << [name, value, e] field end def parse_field(name, value, charset) value = unfold(value) if value.is_a?(String) if klass = self.class.field_class_for(name) klass.parse(value, charset) else OptionalField.parse(name, value, charset) end end # 2.2.3. Long Header Fields # # The process of moving from this folded multiple-line representation # of a header field to its single line representation is called # "unfolding". Unfolding is accomplished by simply removing any CRLF # that is immediately followed by WSP. Each header field should be # treated in its unfolded form for further syntactic and semantic # evaluation. def unfold(string) string.gsub(Constants::UNFOLD_WS, '\1') end end end mail-2.8.1/lib/mail/field_list.rb000066400000000000000000000040351436372131700166100ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # Field List class provides an enhanced array that keeps a list of # email fields in order. And allows you to insert new fields without # having to worry about the order they will appear in. class FieldList < Array def has_field?(field_name) any? { |f| f.responsible_for? field_name } end def get_field(field_name) fields = select_fields(field_name) case fields.size when 0; nil when 1; fields.first else fields end end def add_field(field) if field.singular? replace_field field else insert_field field end end alias_method :<<, :add_field def replace_field(field) if first_offset = index { |f| f.responsible_for? field.name } delete_field field.name insert first_offset, field else insert_field field end end # Insert the field in sorted order. # # Heavily based on bisect.insort from Python, which is: # Copyright (C) 2001-2013 Python Software Foundation. # Licensed under # From def insert_field(field) lo, hi = 0, size while lo < hi mid = (lo + hi).div(2) if field < self[mid] hi = mid else lo = mid + 1 end end insert lo, field end def delete_field(name) delete_if { |f| f.responsible_for? name } end def summary map { |f| "<#{f.name}: #{f.value}>" }.join(", ") end private def select_fields(field_name) fields = select { |f| f.responsible_for? field_name } if fields.size > 1 && singular?(field_name) Array(fields.detect { |f| f.errors.size == 0 } || fields.first) else fields end end def singular?(field_name) if klass = Mail::Field.field_class_for(field_name) klass.singular? else false end end end end mail-2.8.1/lib/mail/fields.rb000066400000000000000000000043041436372131700157370ustar00rootroot00000000000000# frozen_string_literal: true module Mail register_autoload :UnstructuredField, 'mail/fields/unstructured_field' register_autoload :StructuredField, 'mail/fields/structured_field' register_autoload :OptionalField, 'mail/fields/optional_field' register_autoload :BccField, 'mail/fields/bcc_field' register_autoload :CcField, 'mail/fields/cc_field' register_autoload :CommentsField, 'mail/fields/comments_field' register_autoload :ContentDescriptionField, 'mail/fields/content_description_field' register_autoload :ContentDispositionField, 'mail/fields/content_disposition_field' register_autoload :ContentIdField, 'mail/fields/content_id_field' register_autoload :ContentLocationField, 'mail/fields/content_location_field' register_autoload :ContentTransferEncodingField, 'mail/fields/content_transfer_encoding_field' register_autoload :ContentTypeField, 'mail/fields/content_type_field' register_autoload :DateField, 'mail/fields/date_field' register_autoload :FromField, 'mail/fields/from_field' register_autoload :InReplyToField, 'mail/fields/in_reply_to_field' register_autoload :KeywordsField, 'mail/fields/keywords_field' register_autoload :MessageIdField, 'mail/fields/message_id_field' register_autoload :MimeVersionField, 'mail/fields/mime_version_field' register_autoload :ReceivedField, 'mail/fields/received_field' register_autoload :ReferencesField, 'mail/fields/references_field' register_autoload :ReplyToField, 'mail/fields/reply_to_field' register_autoload :ResentBccField, 'mail/fields/resent_bcc_field' register_autoload :ResentCcField, 'mail/fields/resent_cc_field' register_autoload :ResentDateField, 'mail/fields/resent_date_field' register_autoload :ResentFromField, 'mail/fields/resent_from_field' register_autoload :ResentMessageIdField, 'mail/fields/resent_message_id_field' register_autoload :ResentSenderField, 'mail/fields/resent_sender_field' register_autoload :ResentToField, 'mail/fields/resent_to_field' register_autoload :ReturnPathField, 'mail/fields/return_path_field' register_autoload :SenderField, 'mail/fields/sender_field' register_autoload :SubjectField, 'mail/fields/subject_field' register_autoload :ToField, 'mail/fields/to_field' end mail-2.8.1/lib/mail/fields/000077500000000000000000000000001436372131700154115ustar00rootroot00000000000000mail-2.8.1/lib/mail/fields/bcc_field.rb000066400000000000000000000032671436372131700176400ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Blind Carbon Copy Field # # The Bcc field inherits from StructuredField and handles the Bcc: header # field in the email. # # Sending bcc to a mail message will instantiate a Mail::Field object that # has a BccField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Bcc field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.bcc = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:bcc] #=> '# '# '# '' # Bcc field does not get output into an email # mail[:bcc].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:bcc].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class BccField < CommonAddressField #:nodoc: NAME = 'Bcc' attr_accessor :include_in_headers def initialize(value = nil, charset = nil) super self.include_in_headers = false end # Bcc field should not be :encoded by default def encoded if include_in_headers super else '' end end end end mail-2.8.1/lib/mail/fields/cc_field.rb000066400000000000000000000026141436372131700174710ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Carbon Copy Field # # The Cc field inherits from StructuredField and handles the Cc: header # field in the email. # # Sending cc to a mail message will instantiate a Mail::Field object that # has a CcField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Cc field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.cc = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:cc] #=> '# '# '# 'Cc: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:cc].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:cc].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class CcField < CommonAddressField #:nodoc: NAME = 'Cc' end end mail-2.8.1/lib/mail/fields/comments_field.rb000066400000000000000000000022361436372131700207310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_unstructured_field' module Mail # = Comments Field # # The Comments field inherits from UnstructuredField and handles the Comments: # header field in the email. # # Sending comments to a mail message will instantiate a Mail::Field object that # has a CommentsField as its field type. # # An email header can have as many comments fields as it wants. There is no upper # limit, the comments field is also optional (that is, no comment is needed) # # == Examples: # # mail = Mail.new # mail.comments = 'This is a comment' # mail.comments #=> 'This is a comment' # mail[:comments] #=> '# '# '# ['This is a comment', "This is another comment"] class CommentsField < NamedUnstructuredField #:nodoc: NAME = 'Comments' end end mail-2.8.1/lib/mail/fields/common_address_field.rb000066400000000000000000000113331436372131700220770ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' module Mail class AddressContainer < Array #:nodoc: def initialize(field, list = nil) @field = field super list if list end def <<(address) @field << address end end class CommonAddressField < NamedStructuredField #:nodoc: def self.singular? true end def initialize(value = nil, charset = nil) super encode_if_needed(value, charset), charset end def element # :nodoc: @element ||= AddressList.new(value) end # Allows you to iterate through each address object in the address_list def each element.addresses.each do |address| yield(address) end end def default addresses end def address addresses.first end # Returns the address string of all the addresses in the address list def addresses list = element.addresses.map { |a| a.address } Mail::AddressContainer.new(self, list) end # Returns the formatted string of all the addresses in the address list def formatted list = element.addresses.map { |a| a.format } Mail::AddressContainer.new(self, list) end # Returns the display name of all the addresses in the address list def display_names list = element.addresses.map { |a| a.display_name } Mail::AddressContainer.new(self, list) end # Returns the actual address objects in the address list def addrs list = element.addresses Mail::AddressContainer.new(self, list) end # Returns a hash of group name => address strings for the address list def groups element.addresses_grouped_by_group end # Returns the addresses that are part of groups def group_addresses decoded_group_addresses end # Returns a list of decoded group addresses def decoded_group_addresses groups.map { |k,v| v.map { |a| a.decoded } }.flatten end # Returns a list of encoded group addresses def encoded_group_addresses groups.map { |k,v| v.map { |a| a.encoded } }.flatten end # Returns the name of all the groups in a string def group_names # :nodoc: element.group_names end def <<(val) case when val.nil? raise ArgumentError, "Need to pass an address to <<" when Utilities.blank?(val) self else self.value = [self.value, encode_if_needed(val)].reject { |a| Utilities.blank?(a) }.join(", ") end end def encode_if_needed(val, val_charset = charset) #:nodoc: case val when nil val # Need to join arrays of addresses into a single value when Array val.compact.map { |a| encode_if_needed a, val_charset }.join(', ') # Pass through UTF-8; encode non-UTF-8. else utf8_if_needed(val, val_charset) || Encodings.encode_non_usascii(val, val_charset) end end private if 'string'.respond_to?(:encoding) # Pass through UTF-8 addresses def utf8_if_needed(val, val_charset) if val_charset =~ /\AUTF-?8\z/i val elsif val.encoding == Encoding::UTF_8 val elsif (utf8 = val.dup.force_encoding(Encoding::UTF_8)).valid_encoding? utf8 end end else def utf8_if_needed(val, val_charset) if val_charset =~ /\AUTF-?8\z/i val end end end def do_encode return '' if Utilities.blank?(value) address_array = element.addresses.reject { |a| encoded_group_addresses.include?(a.encoded) }.compact.map { |a| a.encoded } address_text = address_array.join(", \r\n\s") group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.encoded }.join(", \r\n\s")};" } group_text = group_array.join(" \r\n\s") return_array = [address_text, group_text].reject { |a| Utilities.blank?(a) } "#{name}: #{return_array.join(", \r\n\s")}\r\n" end def do_decode return nil if Utilities.blank?(value) address_array = element.addresses.reject { |a| decoded_group_addresses.include?(a.decoded) }.map { |a| a.decoded } address_text = address_array.join(", ") group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.decoded }.join(", ")};" } group_text = group_array.join(" ") return_array = [address_text, group_text].reject { |a| Utilities.blank?(a) } return_array.join(", ") end def get_group_addresses(group_list) if group_list.respond_to?(:addresses) group_list.addresses.map do |address| Mail::Address.new(address) end else [] end end end end mail-2.8.1/lib/mail/fields/common_date_field.rb000066400000000000000000000024121436372131700213650ustar00rootroot00000000000000require 'mail/fields/named_structured_field' require 'mail/elements/date_time_element' require 'mail/utilities' module Mail class CommonDateField < NamedStructuredField #:nodoc: def self.singular? true end def self.normalize_datetime(string) if Utilities.blank?(string) datetime = ::DateTime.now else stripped = string.to_s.gsub(/\(.*?\)/, '').squeeze(' ') begin datetime = ::DateTime.parse(stripped) rescue ArgumentError => e raise unless 'invalid date' == e.message end end if datetime datetime.strftime('%a, %d %b %Y %H:%M:%S %z') else string end end def initialize(value = nil, charset = nil) super self.class.normalize_datetime(value), charset end # Returns a date time object of the parsed date def date_time ::DateTime.parse("#{element.date_string} #{element.time_string}") rescue ArgumentError => e raise e unless e.message == 'invalid date' end def default date_time end def element @element ||= Mail::DateTimeElement.new(value) end private def do_encode "#{name}: #{value}\r\n" end def do_decode value.to_s end end end mail-2.8.1/lib/mail/fields/common_field.rb000066400000000000000000000023321436372131700203710ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' module Mail class CommonField #:nodoc: def self.singular? false end def self.parse(*args) new(*args).tap(&:parse) end attr_accessor :name attr_reader :value attr_accessor :charset attr_reader :errors def initialize(name = nil, value = nil, charset = nil) @errors = [] self.name = name self.value = value self.charset = charset || 'utf-8' end def singular? self.class.singular? end def value=(value) @element = nil @value = value.is_a?(Array) ? value : value.to_s parse end def parse tap(&:element) end def element nil end def to_s decoded.to_s end def default decoded end def decoded do_decode end def encoded do_encode end def responsible_for?(field_name) name.to_s.casecmp(field_name.to_s) == 0 end private FILENAME_RE = /\b(filename|name)=([^;"\r\n]+\s[^;"\r\n]+)/ def ensure_filename_quoted(value) if value.is_a?(String) value.sub FILENAME_RE, '\1="\2"' else value end end end end mail-2.8.1/lib/mail/fields/common_message_id_field.rb000066400000000000000000000014411436372131700225510ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' require 'mail/utilities' module Mail class CommonMessageIdField < NamedStructuredField #:nodoc: def element @element ||= Mail::MessageIdsElement.new(value) end def message_id element.message_id end def message_ids element.message_ids end def default ids = message_ids ids.one? ? ids.first : ids end def to_s decoded.to_s end private def do_encode %Q{#{name}: #{formatted_message_ids("\r\n ")}\r\n} end def do_decode formatted_message_ids end def formatted_message_ids(join = ' ') message_ids.map { |m| "<#{m}>" }.join(join) if message_ids.any? end end end mail-2.8.1/lib/mail/fields/content_description_field.rb000066400000000000000000000004041436372131700231540ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_unstructured_field' module Mail class ContentDescriptionField < NamedUnstructuredField #:nodoc: NAME = 'Content-Description' def self.singular? true end end end mail-2.8.1/lib/mail/fields/content_disposition_field.rb000066400000000000000000000020601436372131700231750ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' require 'mail/fields/parameter_hash' module Mail class ContentDispositionField < NamedStructuredField #:nodoc: NAME = 'Content-Disposition' def self.singular? true end def initialize(value = nil, charset = nil) super ensure_filename_quoted(value), charset end def element @element ||= Mail::ContentDispositionElement.new(value) end def disposition_type element.disposition_type end def parameters @parameters = ParameterHash.new element.parameters.each { |p| @parameters.merge!(p) } unless element.parameters.nil? @parameters end def filename @filename ||= parameters['filename'] || parameters['name'] end def encoded p = ";\r\n\s#{parameters.encoded}" if parameters.length > 0 "#{name}: #{disposition_type}#{p}\r\n" end def decoded p = "; #{parameters.decoded}" if parameters.length > 0 "#{disposition_type}#{p}" end end end mail-2.8.1/lib/mail/fields/content_id_field.rb000066400000000000000000000012631436372131700212310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' require 'mail/utilities' module Mail class ContentIdField < NamedStructuredField #:nodoc: NAME = 'Content-ID' def self.singular? true end def initialize(value = nil, charset = nil) value = Mail::Utilities.generate_message_id if Utilities.blank?(value) super value, charset end def element @element ||= Mail::MessageIdsElement.new(value) end def content_id element.message_id end private def do_decode "<#{content_id}>" end def do_encode "#{name}: #{do_decode}\r\n" end end end mail-2.8.1/lib/mail/fields/content_location_field.rb000066400000000000000000000007411436372131700224450ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' module Mail class ContentLocationField < NamedStructuredField #:nodoc: NAME = 'Content-Location' def self.singular? true end def element @element ||= Mail::ContentLocationElement.new(value) end def location element.location end def encoded "#{name}: #{location}\r\n" end def decoded location end end end mail-2.8.1/lib/mail/fields/content_transfer_encoding_field.rb000066400000000000000000000015321436372131700243260ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' module Mail class ContentTransferEncodingField < NamedStructuredField #:nodoc: NAME = 'Content-Transfer-Encoding' def self.singular? true end def self.normalize_content_transfer_encoding(value) case value when /7-?bits?/i '7bit' when /8-?bits?/i '8bit' else value end end def initialize(value = nil, charset = nil) super self.class.normalize_content_transfer_encoding(value), charset end def element @element ||= Mail::ContentTransferEncodingElement.new(value) end def encoding element.encoding end private def do_encode "#{name}: #{encoding}\r\n" end def do_decode encoding end end end mail-2.8.1/lib/mail/fields/content_type_field.rb000066400000000000000000000106511436372131700216170ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' require 'mail/fields/parameter_hash' module Mail class ContentTypeField < NamedStructuredField #:nodoc: NAME = 'Content-Type' class << self def singular? true end def with_boundary(type) new "#{type}; boundary=#{generate_boundary}" end def generate_boundary "--==_mimepart_#{Mail.random_tag}" end end def initialize(value = nil, charset = nil) if value.is_a? Array @main_type = value[0] @sub_type = value[1] @parameters = ParameterHash.new.merge!(value.last) else @main_type = nil @sub_type = nil value = value.to_s end super ensure_filename_quoted(value), charset end def element @element ||= begin Mail::ContentTypeElement.new(value) rescue Mail::Field::ParseError attempt_to_clean end end def attempt_to_clean # Sanitize the value, handle special cases Mail::ContentTypeElement.new(sanitize(value)) rescue Mail::Field::ParseError # All else fails, just get the MIME media type Mail::ContentTypeElement.new(get_mime_type(value)) end def main_type @main_type ||= element.main_type end def sub_type @sub_type ||= element.sub_type end def string "#{main_type}/#{sub_type}" end alias_method :content_type, :string def default decoded end def parameters unless defined? @parameters @parameters = ParameterHash.new element.parameters.each { |p| @parameters.merge!(p) } end @parameters end def value if @value.is_a? Array "#{@main_type}/#{@sub_type}; #{stringify(parameters)}" else @value end end def stringify(params) params.map { |k,v| "#{k}=#{Encodings.param_encode(v)}" }.join("; ") end def filename @filename ||= parameters['filename'] || parameters['name'] end def encoded p = ";\r\n\s#{parameters.encoded}" if parameters && parameters.length > 0 "#{name}: #{content_type}#{p}\r\n" end def decoded p = "; #{parameters.decoded}" if parameters && parameters.length > 0 "#{content_type}#{p}" end private def method_missing(name, *args, &block) if name.to_s =~ /(\w+)=/ self.parameters[$1] = args.first @value = "#{content_type}; #{stringify(parameters)}" else super end end # Various special cases from random emails found that I am not going to change # the parser for def sanitize(val) # TODO: check if there are cases where whitespace is not a separator val = val. gsub(/\s*=\s*/,'='). # remove whitespaces around equal sign gsub(/[; ]+/, '; '). #use '; ' as a separator (or EOL) gsub(/;\s*$/,'') #remove trailing to keep examples below if val =~ /((boundary|name|filename)=(\S*))/i val = "#{$`.downcase}#{$2}=#{$3}#{$'.downcase}" else val.downcase! end case when val.chomp =~ /^\s*([\w\-]+)\/([\w\-]+)\s*;\s?(ISO[\w\-]+)$/i # Microsoft helper: # Handles 'type/subtype;ISO-8559-1' "#{$1}/#{$2}; charset=#{Utilities.quote_atom($3)}" when val.chomp =~ /^text;?$/i # Handles 'text;' and 'text' "text/plain;" when val.chomp =~ /^(\w+);\s(.*)$/i # Handles 'text; ' "text/plain; #{$2}" when val =~ /([\w\-]+\/[\w\-]+);\scharset="charset="(\w+)""/i # Handles text/html; charset="charset="GB2312"" "#{$1}; charset=#{Utilities.quote_atom($2)}" when val =~ /([\w\-]+\/[\w\-]+);\s+(.*)/i type = $1 # Handles misquoted param values # e.g: application/octet-stream; name=archiveshelp1[1].htm # and: audio/x-midi;\r\n\sname=Part .exe params = $2.to_s.split(/\s+/) params = params.map { |i| i.to_s.chomp.strip } params = params.map { |i| i.split(/\s*\=\s*/, 2) } params = params.map { |i| "#{i[0]}=#{Utilities.dquote(i[1].to_s.gsub(/;$/,""))}" }.join('; ') "#{type}; #{params}" when val =~ /^\s*$/ 'text/plain' else val end end def get_mime_type(val) case val when /^([\w\-]+)\/([\w\-]+);.+$/i "#{$1}/#{$2}" else 'text/plain' end end end end mail-2.8.1/lib/mail/fields/date_field.rb000066400000000000000000000020111436372131700200100ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_date_field' module Mail # = Date Field # # The Date field inherits from StructuredField and handles the Date: header # field in the email. # # Sending date to a mail message will instantiate a Mail::Field object that # has a DateField as its field type. This includes all Mail::CommonAddress # module instance methods. # # There must be excatly one Date field in an RFC2822 email. # # == Examples: # # mail = Mail.new # mail.date = 'Mon, 24 Nov 1997 14:22:01 -0800' # mail.date #=> # # mail.date.to_s #=> 'Mon, 24 Nov 1997 14:22:01 -0800' # mail[:date] #=> '# '# '# ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:from] #=> '# '# '# 'from: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:from].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:from].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:from].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class FromField < CommonAddressField #:nodoc: NAME = 'From' end end mail-2.8.1/lib/mail/fields/in_reply_to_field.rb000066400000000000000000000031171436372131700214260ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_message_id_field' module Mail # = In-Reply-To Field # # The In-Reply-To field inherits from StructuredField and handles the # In-Reply-To: header field in the email. # # Sending in_reply_to to a mail message will instantiate a Mail::Field object that # has a InReplyToField as its field type. This includes all Mail::CommonMessageId # module instance metods. # # Note that, the #message_ids method will return an array of message IDs without the # enclosing angle brackets which per RFC are not syntactically part of the message id. # # Only one InReplyTo field can appear in a header, though it can have multiple # Message IDs. # # == Examples: # # mail = Mail.new # mail.in_reply_to = '' # mail.in_reply_to #=> '' # mail[:in_reply_to] #=> '# '# '# ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom'] class InReplyToField < CommonMessageIdField #:nodoc: NAME = 'In-Reply-To' def self.singular? true end def initialize(value = nil, charset = nil) if value.is_a?(Array) super value.join("\r\n\s"), charset else super end end end end mail-2.8.1/lib/mail/fields/keywords_field.rb000066400000000000000000000010641436372131700207510ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' module Mail # keywords = "Keywords:" phrase *("," phrase) CRLF class KeywordsField < NamedStructuredField #:nodoc: NAME = 'Keywords' def element @element ||= PhraseList.new(value) end def keywords element.phrases end def default keywords end private def do_decode keywords.join(', ') end def do_encode "#{name}: #{keywords.join(",\r\n ")}\r\n" end end end mail-2.8.1/lib/mail/fields/message_id_field.rb000066400000000000000000000024261436372131700212050ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_message_id_field' require 'mail/utilities' module Mail # Only one Message-ID field may appear in a header. # # Note that parsed Message IDs do not contain their enclosing angle # brackets which, per RFC, are not part of the ID. # # mail = Mail.new # mail.message_id = '' # mail.message_id #=> '' # mail[:message_id] #=> '# '# '# 'F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom' # mail[:message_id].message_ids #=> ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom'] class MessageIdField < CommonMessageIdField #:nodoc: NAME = 'Message-ID' def self.singular? true end def initialize(value = nil, charset = nil) value = Mail::Utilities.generate_message_id if Utilities.blank?(value) super value, charset end def message_ids [message_id] end end end mail-2.8.1/lib/mail/fields/mime_version_field.rb000066400000000000000000000013401436372131700215730ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' require 'mail/utilities' module Mail class MimeVersionField < NamedStructuredField #:nodoc: NAME = 'Mime-Version' def self.singular? true end def initialize(value = nil, charset = nil) value = '1.0' if Utilities.blank?(value) super value, charset end def element @element ||= Mail::MimeVersionElement.new(value) end def version "#{element.major}.#{element.minor}" end def major element.major.to_i end def minor element.minor.to_i end def encoded "#{name}: #{version}\r\n" end def decoded version end end end mail-2.8.1/lib/mail/fields/named_structured_field.rb000066400000000000000000000004121436372131700224460ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/structured_field' module Mail class NamedStructuredField < StructuredField #:nodoc: def initialize(value = nil, charset = nil) super self.class::NAME, value, charset end end end mail-2.8.1/lib/mail/fields/named_unstructured_field.rb000066400000000000000000000004201436372131700230100ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/unstructured_field' module Mail class NamedUnstructuredField < UnstructuredField #:nodoc: def initialize(value = nil, charset = nil) super self.class::NAME, value, charset end end end mail-2.8.1/lib/mail/fields/optional_field.rb000066400000000000000000000006511436372131700207300ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/unstructured_field' module Mail # The field names of any optional-field MUST NOT be identical to any # field name specified elsewhere in this standard. # # optional-field = field-name ":" unstructured CRLF class OptionalField < UnstructuredField #:nodoc: private def do_encode "#{wrapped_value}\r\n" end end end mail-2.8.1/lib/mail/fields/parameter_hash.rb000066400000000000000000000034721436372131700207270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' require 'mail/indifferent_hash' require 'mail/encodings' module Mail # ParameterHash is an intelligent Hash that allows you to add # parameter values including the MIME extension paramaters that # have the name*0="blah", name*1="bleh" keys, and will just return # a single key called name="blahbleh" and do any required un-encoding # to make that happen # # Parameters are defined in RFC2045. Split keys are in RFC2231. class ParameterHash < IndifferentHash #:nodoc: def [](key_name) key_pattern = Regexp.escape(key_name.to_s) pairs = [] exact = nil each do |k,v| if k =~ /^#{key_pattern}(\*|$)/i if $1 == Constants::ASTERISK pairs << [k, v] else exact = k end end end if pairs.empty? # Just dealing with a single value pair super(exact || key_name) else # Dealing with a multiple value pair or a single encoded value pair string = pairs.sort { |a,b| a.first.to_s <=> b.first.to_s }.map { |v| v.last }.join('') if mt = string.match(/([\w\-]+)?'(\w\w)?'(.*)/) string = mt[3] encoding = mt[1] else encoding = nil end Mail::Encodings.param_decode(string, encoding) end end def encoded map.sort_by { |a| a.first.to_s }.map! do |key_name, value| unless value.ascii_only? value = Mail::Encodings.param_encode(value) key_name = "#{key_name}*" end %Q{#{key_name}=#{Utilities.quote_token(value)}} end.join(";\r\n\s") end def decoded map.sort_by { |a| a.first.to_s }.map! do |key_name, value| %Q{#{key_name}=#{Utilities.quote_token(value)}} end.join("; ") end end end mail-2.8.1/lib/mail/fields/received_field.rb000066400000000000000000000027731436372131700207000ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_structured_field' module Mail # trace = [return] # 1*received # # return = "Return-Path:" path CRLF # # path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) / # obs-path # # received = "Received:" name-val-list ";" date-time CRLF # # name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)] # # name-val-pair = item-name CFWS item-value # # item-name = ALPHA *(["-"] (ALPHA / DIGIT)) # # item-value = 1*angle-addr / addr-spec / # atom / domain / msg-id class ReceivedField < NamedStructuredField #:nodoc: NAME = 'Received' def element @element ||= Mail::ReceivedElement.new(value) end def date_time @datetime ||= element.date_time end def info element.info end def formatted_date if date_time.respond_to? :strftime and date_time.respond_to? :zone date_time.strftime("%a, %d %b %Y %H:%M:%S ") + date_time.zone.delete(':') end end private def do_encode if Utilities.blank?(value) "#{name}: \r\n" else "#{name}: #{info}; #{formatted_date}\r\n" end end def do_decode if Utilities.blank?(value) "" else "#{info}; #{formatted_date}" end end end end mail-2.8.1/lib/mail/fields/references_field.rb000066400000000000000000000030671436372131700212300ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_message_id_field' module Mail # = References Field # # The References field inherits references StructuredField and handles the References: header # field in the email. # # Sending references to a mail message will instantiate a Mail::Field object that # has a ReferencesField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Note that, the #message_ids method will return an array of message IDs without the # enclosing angle brackets which per RFC are not syntactically part of the message id. # # Only one References field can appear in a header, though it can have multiple # Message IDs. # # == Examples: # # mail = Mail.new # mail.references = '' # mail.references #=> '' # mail[:references] #=> '# '# '# ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom'] class ReferencesField < CommonMessageIdField #:nodoc: NAME = 'References' def self.singular? true end def initialize(value = nil, charset = nil) value = value.join("\r\n\s") if value.is_a?(Array) super value, charset end end end mail-2.8.1/lib/mail/fields/reply_to_field.rb000066400000000000000000000030001436372131700207270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Reply-To Field # # The Reply-To field inherits reply-to StructuredField and handles the Reply-To: header # field in the email. # # Sending reply_to to a mail message will instantiate a Mail::Field object that # has a ReplyToField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Reply-To field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.reply_to = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:reply_to] #=> '# '# '# 'Reply-To: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:reply_to].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:reply_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:reply_to].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ReplyToField < CommonAddressField #:nodoc: NAME = 'Reply-To' end end mail-2.8.1/lib/mail/fields/resent_bcc_field.rb000066400000000000000000000030541436372131700212120ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Resent-Bcc Field # # The Resent-Bcc field inherits resent-bcc StructuredField and handles the # Resent-Bcc: header field in the email. # # Sending resent_bcc to a mail message will instantiate a Mail::Field object that # has a ResentBccField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Resent-Bcc field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.resent_bcc = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_bcc] #=> '# '# '# 'Resent-Bcc: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:resent_bcc].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:resent_bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_bcc].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ResentBccField < CommonAddressField #:nodoc: NAME = 'Resent-Bcc' end end mail-2.8.1/lib/mail/fields/resent_cc_field.rb000066400000000000000000000030261436372131700210470ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Resent-Cc Field # # The Resent-Cc field inherits resent-cc StructuredField and handles the Resent-Cc: header # field in the email. # # Sending resent_cc to a mail message will instantiate a Mail::Field object that # has a ResentCcField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Resent-Cc field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.resent_cc = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_cc] #=> '# '# '# 'Resent-Cc: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:resent_cc].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:resent_cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_cc].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ResentCcField < CommonAddressField #:nodoc: NAME = 'Resent-Cc' end end mail-2.8.1/lib/mail/fields/resent_date_field.rb000066400000000000000000000003711436372131700213770ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_date_field' module Mail # # resent-date = "Resent-Date:" date-time CRLF class ResentDateField < CommonDateField #:nodoc: NAME = 'Resent-Date' end end mail-2.8.1/lib/mail/fields/resent_from_field.rb000066400000000000000000000031021436372131700214200ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Resent-From Field # # The Resent-From field inherits resent-from StructuredField and handles the Resent-From: header # field in the email. # # Sending resent_from to a mail message will instantiate a Mail::Field object that # has a ResentFromField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Resent-From field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.resent_from = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_from] #=> '# '# '# 'Resent-From: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:resent_from].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:resent_from].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_from].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ResentFromField < CommonAddressField #:nodoc: NAME = 'Resent-From' end end mail-2.8.1/lib/mail/fields/resent_message_id_field.rb000066400000000000000000000004221436372131700225570ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_message_id_field' module Mail # # resent-msg-id = "Resent-Message-ID:" msg-id CRLF class ResentMessageIdField < CommonMessageIdField #:nodoc: NAME = 'Resent-Message-ID' end end mail-2.8.1/lib/mail/fields/resent_sender_field.rb000066400000000000000000000027161436372131700217470ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Resent-Sender Field # # The Resent-Sender field inherits resent-sender StructuredField and handles the Resent-Sender: header # field in the email. # # Sending resent_sender to a mail message will instantiate a Mail::Field object that # has a ResentSenderField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Resent-Sender field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.resent_sender = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_sender #=> ['mikel@test.lindsaar.net'] # mail[:resent_sender] #=> '# '# '# 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_sender.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail.resent_sender.formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ResentSenderField < CommonAddressField #:nodoc: NAME = 'Resent-Sender' end end mail-2.8.1/lib/mail/fields/resent_to_field.rb000066400000000000000000000030261436372131700211040ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Resent-To Field # # The Resent-To field inherits resent-to StructuredField and handles the Resent-To: header # field in the email. # # Sending resent_to to a mail message will instantiate a Mail::Field object that # has a ResentToField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Resent-To field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.resent_to = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_to] #=> '# '# '# 'Resent-To: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:resent_to].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:resent_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:resent_to].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ResentToField < CommonAddressField #:nodoc: NAME = 'Resent-To' end end mail-2.8.1/lib/mail/fields/return_path_field.rb000066400000000000000000000030401436372131700214310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # 4.4.3. REPLY-TO / RESENT-REPLY-TO # # Note: The "Return-Path" field is added by the mail transport # service, at the time of final deliver. It is intended # to identify a path back to the orginator of the mes- # sage. The "Reply-To" field is added by the message # originator and is intended to direct replies. # # trace = [return] # 1*received # # return = "Return-Path:" path CRLF # # path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) / # obs-path # # received = "Received:" name-val-list ";" date-time CRLF # # name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)] # # name-val-pair = item-name CFWS item-value # # item-name = ALPHA *(["-"] (ALPHA / DIGIT)) # # item-value = 1*angle-addr / addr-spec / # atom / domain / msg-id # class ReturnPathField < CommonAddressField #:nodoc: NAME = 'Return-Path' def self.singular? true end def initialize(value = nil, charset = nil) if value == '<>' super nil, charset else super end end def default address end private def do_encode "#{name}: <#{address}>\r\n" end def do_decode address end end end mail-2.8.1/lib/mail/fields/sender_field.rb000066400000000000000000000027151436372131700203660ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = Sender Field # # The Sender field inherits sender StructuredField and handles the Sender: header # field in the email. # # Sending sender to a mail message will instantiate a Mail::Field object that # has a SenderField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one Sender field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.sender = 'Mikel Lindsaar ' # mail.sender #=> 'mikel@test.lindsaar.net' # mail[:sender] #=> '# '# '# "Sender: Mikel Lindsaar \r\n" # mail[:sender].decoded #=> 'Mikel Lindsaar ' # mail[:sender].addresses #=> ['mikel@test.lindsaar.net'] # mail[:sender].formatted #=> ['Mikel Lindsaar '] class SenderField < CommonAddressField #:nodoc: NAME = 'Sender' def self.singular? true end def default address end def addresses Array(super.first) end end end mail-2.8.1/lib/mail/fields/structured_field.rb000066400000000000000000000021651436372131700213110ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_field' module Mail # Provides access to a structured header field # # ===Per RFC 2822: # 2.2.2. Structured Header Field Bodies # # Some field bodies in this standard have specific syntactical # structure more restrictive than the unstructured field bodies # described above. These are referred to as "structured" field bodies. # Structured field bodies are sequences of specific lexical tokens as # described in sections 3 and 4 of this standard. Many of these tokens # are allowed (according to their syntax) to be introduced or end with # comments (as described in section 3.2.3) as well as the space (SP, # ASCII value 32) and horizontal tab (HTAB, ASCII value 9) characters # (together known as the white space characters, WSP), and those WSP # characters are subject to header "folding" and "unfolding" as # described in section 2.2.3. Semantic analysis of structured field # bodies is given along with their syntax. class StructuredField < CommonField #:nodoc: end end mail-2.8.1/lib/mail/fields/subject_field.rb000066400000000000000000000004521436372131700205410ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/named_unstructured_field' module Mail # # subject = "Subject:" unstructured CRLF class SubjectField < NamedUnstructuredField #:nodoc: NAME = 'Subject' def self.singular? true end end end mail-2.8.1/lib/mail/fields/to_field.rb000066400000000000000000000026011436372131700175220ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_address_field' module Mail # = To Field # # The To field inherits to StructuredField and handles the To: header # field in the email. # # Sending to to a mail message will instantiate a Mail::Field object that # has a ToField as its field type. This includes all Mail::CommonAddress # module instance metods. # # Only one To field can appear in a header, though it can have multiple # addresses and groups of addresses. # # == Examples: # # mail = Mail.new # mail.to = 'Mikel Lindsaar , ada@test.lindsaar.net' # mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:to] #=> '# '# '# 'To: Mikel Lindsaar , ada@test.lindsaar.net\r\n' # mail[:to].decoded #=> 'Mikel Lindsaar , ada@test.lindsaar.net' # mail[:to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # mail[:to].formatted #=> ['Mikel Lindsaar ', 'ada@test.lindsaar.net'] class ToField < CommonAddressField #:nodoc: NAME = 'To' end end mail-2.8.1/lib/mail/fields/unstructured_field.rb000066400000000000000000000147171436372131700216620ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/fields/common_field' require 'mail/utilities' module Mail # Provides access to an unstructured header field # # ===Per RFC 2822: # 2.2.1. Unstructured Header Field Bodies # # Some field bodies in this standard are defined simply as # "unstructured" (which is specified below as any US-ASCII characters, # except for CR and LF) with no further restrictions. These are # referred to as unstructured field bodies. Semantically, unstructured # field bodies are simply to be treated as a single line of characters # with no further processing (except for header "folding" and # "unfolding" as described in section 2.2.3). class UnstructuredField < CommonField #:nodoc: def initialize(name, value, charset = nil) if value.is_a?(Array) # Probably has arrived here from a failed parse of an AddressList Field value = value.join(', ') # Mark UTF-8 strings parsed from ASCII-8BIT elsif value.respond_to?(:force_encoding) && value.encoding == Encoding::ASCII_8BIT utf8 = value.dup.force_encoding(Encoding::UTF_8) value = utf8 if utf8.valid_encoding? end charset ||= if value.respond_to?(:encoding) value.encoding end super name, value.to_s, charset end # An unstructured field does not parse def parse self end private def do_encode if value && !value.empty? "#{wrapped_value}\r\n" else '' end end def do_decode Utilities.blank?(value) ? nil : Encodings.decode_encode(value, :decode) end # 2.2.3. Long Header Fields # # Each header field is logically a single line of characters comprising # the field name, the colon, and the field body. For convenience # however, and to deal with the 998/78 character limitations per line, # the field body portion of a header field can be split into a multiple # line representation; this is called "folding". The general rule is # that wherever this standard allows for folding white space (not # simply WSP characters), a CRLF may be inserted before any WSP. For # example, the header field: # # Subject: This is a test # # can be represented as: # # Subject: This # is a test # # Note: Though structured field bodies are defined in such a way that # folding can take place between many of the lexical tokens (and even # within some of the lexical tokens), folding SHOULD be limited to # placing the CRLF at higher-level syntactic breaks. For instance, if # a field body is defined as comma-separated values, it is recommended # that folding occur after the comma separating the structured items in # preference to other places where the field could be folded, even if # it is allowed elsewhere. def wrapped_value # :nodoc: wrap_lines(name, fold("#{name}: ".length)) end # 6.2. Display of 'encoded-word's # # When displaying a particular header field that contains multiple # 'encoded-word's, any 'linear-white-space' that separates a pair of # adjacent 'encoded-word's is ignored. (This is to allow the use of # multiple 'encoded-word's to represent long strings of unencoded text, # without having to separate 'encoded-word's where spaces occur in the # unencoded text.) def wrap_lines(name, folded_lines) result = ["#{name}: #{folded_lines.shift}"] result.concat(folded_lines) result.join("\r\n\s") end def fold(prepend = 0) # :nodoc: encoding = normalized_encoding decoded_string = decoded.to_s should_encode = !decoded_string.ascii_only? if should_encode first = true words = decoded_string.split(/[ \t]/).map do |word| if first first = !first else word = " #{word}" end if !word.ascii_only? word else word.scan(/.{7}|.+$/) end end.flatten else words = decoded_string.split(/[ \t]/) end folded_lines = [] while !words.empty? limit = 78 - prepend limit = limit - 7 - encoding.length if should_encode line = String.new first_word = true while !words.empty? break unless word = words.first.dup # Convert on 1.9+ only since we aren't sure of the current # charset encoding on 1.8. We'd need to track internal/external # charset on each field. if charset && word.respond_to?(:encoding) word = Encodings.transcode_charset(word, word.encoding, charset) end word = encode(word) if should_encode word = encode_crlf(word) # Skip to next line if we're going to go past the limit # Unless this is the first word, in which case we're going to add it anyway # Note: This means that a word that's longer than 998 characters is going to break the spec. Please fix if this is a problem for you. # (The fix, it seems, would be to use encoded-word encoding on it, because that way you can break it across multiple lines and # the linebreak will be ignored) break if !line.empty? && (line.length + word.length + 1 > limit) # Remove the word from the queue ... words.shift # Add word separator if first_word first_word = false else line << " " if !should_encode end # ... add it in encoded form to the current line line << word end # Encode the line if necessary line = "=?#{encoding}?Q?#{line}?=" if should_encode # Add the line to the output and reset the prepend folded_lines << line prepend = 0 end folded_lines end def encode(value) value = [value].pack(Constants::CAPITAL_M).gsub(Constants::EQUAL_LF, Constants::EMPTY) value.gsub!(/"/, '=22') value.gsub!(/\(/, '=28') value.gsub!(/\)/, '=29') value.gsub!(/\?/, '=3F') value.gsub!(/_/, '=5F') value.gsub!(/ /, '_') value end def encode_crlf(value) value.gsub!(Constants::CR, Constants::CR_ENCODED) value.gsub!(Constants::LF, Constants::LF_ENCODED) value end def normalized_encoding charset.to_s.upcase.gsub('_', '-') end end end mail-2.8.1/lib/mail/header.rb000066400000000000000000000165501436372131700157270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' require 'mail/utilities' module Mail # Provides access to a header object. # # ===Per RFC2822 # # 2.2. Header Fields # # Header fields are lines composed of a field name, followed by a colon # (":"), followed by a field body, and terminated by CRLF. A field # name MUST be composed of printable US-ASCII characters (i.e., # characters that have values between 33 and 126, inclusive), except # colon. A field body may be composed of any US-ASCII characters, # except for CR and LF. However, a field body may contain CRLF when # used in header "folding" and "unfolding" as described in section # 2.2.3. All field bodies MUST conform to the syntax described in # sections 3 and 4 of this standard. class Header include Enumerable @@maximum_amount = 1000 # Large amount of headers in Email might create extra high CPU load # Use this parameter to limit number of headers that will be parsed by # mail library. # Default: 1000 def self.maximum_amount @@maximum_amount end def self.maximum_amount=(value) @@maximum_amount = value end attr_reader :raw_source, :charset # Creates a new header object. # # Accepts raw text or nothing. If given raw text will attempt to parse # it and split it into the various fields, instantiating each field as # it goes. # # If it finds a field that should be a structured field (such as content # type), but it fails to parse it, it will simply make it an unstructured # field and leave it alone. This will mean that the data is preserved but # no automatic processing of that field will happen. If you find one of # these cases, please make a patch and send it in, or at the least, send # me the example so we can fix it. def initialize(header_text = nil, charset = nil) @charset = charset @raw_source = ::Mail::Utilities.to_crlf(header_text).lstrip split_header if header_text end def initialize_copy(original) super @fields = @fields.dup @fields.map!(&:dup) end # Returns an array of all the fields in the header in order that they # were read in. def fields @fields ||= FieldList.new end # 3.6. Field definitions # # It is important to note that the header fields are not guaranteed to # be in a particular order. They may appear in any order, and they # have been known to be reordered occasionally when transported over # the Internet. However, for the purposes of this standard, header # fields SHOULD NOT be reordered when a message is transported or # transformed. More importantly, the trace header fields and resent # header fields MUST NOT be reordered, and SHOULD be kept in blocks # prepended to the message. See sections 3.6.6 and 3.6.7 for more # information. # # Populates the fields container with Field objects in the order it # receives them in. # # Acceps an array of field string values, for example: # # h = Header.new # h.fields = ['From: mikel@me.com', 'To: bob@you.com'] def fields=(unfolded_fields) @fields = Mail::FieldList.new if unfolded_fields.size > self.class.maximum_amount Kernel.warn "WARNING: More than #{self.class.maximum_amount} header fields; only using the first #{self.class.maximum_amount} and ignoring the rest" unfolded_fields = unfolded_fields.slice(0...self.class.maximum_amount) end unfolded_fields.each do |field| if field = Field.parse(field, charset) @fields.add_field field end end end def errors @fields.map(&:errors).flatten(1) end # 3.6. Field definitions # # The following table indicates limits on the number of times each # field may occur in a message header as well as any special # limitations on the use of those fields. An asterisk next to a value # in the minimum or maximum column indicates that a special restriction # appears in the Notes column. # # # # As per RFC, many fields can appear more than once, we will return a string # of the value if there is only one header, or if there is more than one # matching header, will return an array of values in order that they appear # in the header ordered from top to bottom. # # Example: # # h = Header.new # h.fields = ['To: mikel@me.com', 'X-Mail-SPAM: 15', 'X-Mail-SPAM: 20'] # h['To'] #=> 'mikel@me.com' # h['X-Mail-SPAM'] #=> ['15', '20'] def [](name) fields.get_field(Utilities.dasherize(name)) end # Sets the FIRST matching field in the header to passed value, or deletes # the FIRST field matched from the header if passed nil # # Example: # # h = Header.new # h.fields = ['To: mikel@me.com', 'X-Mail-SPAM: 15', 'X-Mail-SPAM: 20'] # h['To'] = 'bob@you.com' # h['To'] #=> 'bob@you.com' # h['X-Mail-SPAM'] = '10000' # h['X-Mail-SPAM'] # => ['15', '20', '10000'] # h['X-Mail-SPAM'] = nil # h['X-Mail-SPAM'] # => nil def []=(name, value) name = name.to_s if name.include?(Constants::COLON) raise ArgumentError, "Header names may not contain a colon: #{name.inspect}" end name = Utilities.dasherize(name) # Assign nil to delete the field if value.nil? fields.delete_field name else fields.add_field Field.new(name.to_s, value, charset) # Update charset if specified in Content-Type if name == 'content-type' params = self[:content_type].parameters rescue nil @charset = params[:charset] if params && params[:charset] end end end def charset=(val) params = self[:content_type].parameters rescue nil if params if val params[:charset] = val else params.delete(:charset) end end @charset = val end def encoded buffer = String.new buffer.force_encoding('us-ascii') if buffer.respond_to?(:force_encoding) fields.each do |field| buffer << field.encoded end buffer end def to_s encoded end def decoded raise NoMethodError, 'Can not decode an entire header as there could be character set conflicts. Try calling #decoded on the various fields.' end def field_summary fields.summary end # Returns true if the header has a Message-ID defined (empty or not) def has_message_id? fields.has_field? 'Message-ID' end # Returns true if the header has a Content-ID defined (empty or not) def has_content_id? fields.has_field? 'Content-ID' end # Returns true if the header has a Date defined (empty or not) def has_date? fields.has_field? 'Date' end # Returns true if the header has a MIME version defined (empty or not) def has_mime_version? fields.has_field? 'Mime-Version' end private # Splits an unfolded and line break cleaned header into individual field # strings. def split_header self.fields = @raw_source.split(Constants::HEADER_SPLIT) end # Enumerable support. Yield each field in order. def each(&block) fields.each(&block) end end end mail-2.8.1/lib/mail/indifferent_hash.rb000066400000000000000000000074421436372131700177770ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true # This is an almost cut and paste from ActiveSupport v3.0.6, copied in here so that Mail # itself does not depend on ActiveSupport to avoid versioning conflicts module Mail class IndifferentHash < Hash def initialize(constructor = {}) if constructor.is_a?(Hash) super() update(constructor) else super(constructor) end end def default(key = nil) if key.is_a?(Symbol) && include?(key = key.to_s) self[key] else super end end def self.new_from_hash_copying_default(hash) IndifferentHash.new(hash).tap do |new_hash| new_hash.default = hash.default end end alias_method :regular_writer, :[]= unless method_defined?(:regular_writer) alias_method :regular_update, :update unless method_defined?(:regular_update) # Assigns a new value to the hash: # # hash = HashWithIndifferentAccess.new # hash[:key] = "value" # def []=(key, value) regular_writer(convert_key(key), convert_value(value)) end alias_method :store, :[]= # Updates the instantized hash with values from the second: # # hash_1 = HashWithIndifferentAccess.new # hash_1[:key] = "value" # # hash_2 = HashWithIndifferentAccess.new # hash_2[:key] = "New Value!" # # hash_1.update(hash_2) # => {"key"=>"New Value!"} # def update(other_hash) other_hash.each_pair { |key, value| regular_writer(convert_key(key), convert_value(value)) } self end alias_method :merge!, :update # Checks the hash for a key matching the argument passed in: # # hash = HashWithIndifferentAccess.new # hash["key"] = "value" # hash.key? :key # => true # hash.key? "key" # => true # def key?(key) super(convert_key(key)) end alias_method :include?, :key? alias_method :has_key?, :key? alias_method :member?, :key? # Fetches the value for the specified key, same as doing hash[key] def fetch(key, *extras) super(convert_key(key), *extras) end # Returns an array of the values at the specified indices: # # hash = HashWithIndifferentAccess.new # hash[:a] = "x" # hash[:b] = "y" # hash.values_at("a", "b") # => ["x", "y"] # def values_at(*indices) indices.collect {|key| self[convert_key(key)]} end # Returns an exact copy of the hash. def dup IndifferentHash.new(self) end # Merges the instantized and the specified hashes together, giving precedence to the values from the second hash # Does not overwrite the existing hash. def merge(hash) self.dup.update(hash) end # Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second. # This overloaded definition prevents returning a regular hash, if reverse_merge is called on a HashWithDifferentAccess. def reverse_merge(other_hash) super self.class.new_from_hash_copying_default(other_hash) end def reverse_merge!(other_hash) replace(reverse_merge( other_hash )) end # Removes a specified key from the hash. def delete(key) super(convert_key(key)) end def stringify_keys!; self end def stringify_keys; dup end def symbolize_keys; to_hash.symbolize_keys end def to_options!; self end def to_hash Hash.new(default).merge!(self) end protected def convert_key(key) key.kind_of?(Symbol) ? key.to_s : key end def convert_value(value) if value.class == Hash self.class.new_from_hash_copying_default(value) elsif value.is_a?(Array) value.dup.replace(value.map { |e| convert_value(e) }) else value end end end end mail-2.8.1/lib/mail/mail.rb000066400000000000000000000202321436372131700154110ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # Allows you to create a new Mail::Message object. # # You can make an email via passing a string or passing a block. # # For example, the following two examples will create the same email # message: # # Creating via a string: # # string = "To: mikel@test.lindsaar.net\r\n" # string << "From: bob@test.lindsaar.net\r\n" # string << "Subject: This is an email\r\n" # string << "\r\n" # string << "This is the body" # Mail.new(string) # # Or creating via a block: # # message = Mail.new do # to 'mikel@test.lindsaar.net' # from 'bob@test.lindsaar.net' # subject 'This is an email' # body 'This is the body' # end # # Or creating via a hash (or hash like object): # # message = Mail.new({:to => 'mikel@test.lindsaar.net', # 'from' => 'bob@test.lindsaar.net', # :subject => 'This is an email', # :body => 'This is the body' }) # # Note, the hash keys can be strings or symbols, the passed in object # does not need to be a hash, it just needs to respond to :each_pair # and yield each key value pair. # # As a side note, you can also create a new email through creating # a Mail::Message object directly and then passing in values via string, # symbol or direct method calls. See Mail::Message for more information. # # mail = Mail.new # mail.to = 'mikel@test.lindsaar.net' # mail[:from] = 'bob@test.lindsaar.net' # mail['subject'] = 'This is an email' # mail.body = 'This is the body' def self.new(*args, &block) Message.new(args, &block) end # Sets the default delivery method and retriever method for all new Mail objects. # The delivery_method and retriever_method default to :smtp and :pop3, with defaults # set. # # So sending a new email, if you have an SMTP server running on localhost is # as easy as: # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'bob@test.lindsaar.net' # subject 'hi there!' # body 'this is a body' # end # # If you do not specify anything, you will get the following equivalent code set in # every new mail object: # # Mail.defaults do # delivery_method :smtp, { :address => "localhost", # :port => 25, # :domain => 'localhost.localdomain', # :user_name => nil, # :password => nil, # :authentication => nil, # :enable_starttls_auto => true } # # retriever_method :pop3, { :address => "localhost", # :port => 995, # :user_name => nil, # :password => nil, # :enable_ssl => true } # end # # Mail.delivery_method.new #=> Mail::SMTP instance # Mail.retriever_method.new #=> Mail::POP3 instance # # Each mail object inherits the default set in Mail.delivery_method, however, on # a per email basis, you can override the method: # # mail.delivery_method :smtp # # Or you can override the method and pass in settings: # # mail.delivery_method :smtp, :address => 'some.host' def self.defaults(&block) Configuration.instance.instance_eval(&block) end # Returns the delivery method selected, defaults to an instance of Mail::SMTP def self.delivery_method Configuration.instance.delivery_method end # Returns the retriever method selected, defaults to an instance of Mail::POP3 def self.retriever_method Configuration.instance.retriever_method end # Send an email using the default configuration. You do need to set a default # configuration first before you use self.deliver, if you don't, an appropriate # error will be raised telling you to. # # If you do not specify a delivery type, SMTP will be used. # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'This is a test email' # body 'Not much to say here' # end # # You can also do: # # mail = Mail.read('email.eml') # mail.deliver! # # And your email object will be created and sent. def self.deliver(*args, &block) mail = self.new(args, &block) mail.deliver mail end # Find emails from the default retriever # See Mail::Retriever for a complete documentation. def self.find(*args, &block) retriever_method.find(*args, &block) end # Finds and then deletes retrieved emails from the default retriever # See Mail::Retriever for a complete documentation. def self.find_and_delete(*args, &block) retriever_method.find_and_delete(*args, &block) end # Receive the first email(s) from the default retriever # See Mail::Retriever for a complete documentation. def self.first(*args, &block) retriever_method.first(*args, &block) end # Receive the first email(s) from the default retriever # See Mail::Retriever for a complete documentation. def self.last(*args, &block) retriever_method.last(*args, &block) end # Receive all emails from the default retriever # See Mail::Retriever for a complete documentation. def self.all(*args, &block) retriever_method.all(*args, &block) end # Reads in an email message from a path and instantiates it as a new Mail::Message def self.read(filename) self.new(File.open(filename, 'rb') { |f| f.read }) end # Delete all emails from the default retriever # See Mail::Retriever for a complete documentation. def self.delete_all(*args, &block) retriever_method.delete_all(*args, &block) end # Instantiates a new Mail::Message using a string def Mail.read_from_string(mail_as_string) Mail.new(mail_as_string) end def Mail.connection(&block) retriever_method.connection(&block) end # Initialize the observers and interceptors arrays @@delivery_notification_observers = [] @@delivery_interceptors = [] # You can register an object to be informed of every email that is sent through # this method. # # Your object needs to respond to a single method #delivered_email(mail) # which receives the email that is sent. def self.register_observer(observer) unless @@delivery_notification_observers.include?(observer) @@delivery_notification_observers << observer end end # Unregister the given observer, allowing mail to resume operations # without it. def self.unregister_observer(observer) @@delivery_notification_observers.delete(observer) end # You can register an object to be given every mail object that will be sent, # before it is sent. So if you want to add special headers or modify any # email that gets sent through the Mail library, you can do so. # # Your object needs to respond to a single method #delivering_email(mail) # which receives the email that is about to be sent. Make your modifications # directly to this object. def self.register_interceptor(interceptor) unless @@delivery_interceptors.include?(interceptor) @@delivery_interceptors << interceptor end end # Unregister the given interceptor, allowing mail to resume operations # without it. def self.unregister_interceptor(interceptor) @@delivery_interceptors.delete(interceptor) end def self.inform_observers(mail) @@delivery_notification_observers.each do |observer| observer.delivered_email(mail) end end def self.inform_interceptors(mail) @@delivery_interceptors.each do |interceptor| interceptor.delivering_email(mail) end end protected RANDOM_TAG='%x%x_%x%x%d%x' def self.random_tag t = Time.now sprintf(RANDOM_TAG, t.to_i, t.tv_usec, $$, Thread.current.object_id.abs, self.uniq, rand(255)) end private def self.something_random (Thread.current.object_id * rand(255) / Time.now.to_f).to_s.slice(-3..-1).to_i end def self.uniq @@uniq += 1 end @@uniq = self.something_random end mail-2.8.1/lib/mail/matchers/000077500000000000000000000000001436372131700157515ustar00rootroot00000000000000mail-2.8.1/lib/mail/matchers/attachment_matchers.rb000066400000000000000000000016041436372131700223150ustar00rootroot00000000000000# frozen_string_literal: true module Mail module Matchers def any_attachment AnyAttachmentMatcher.new end def an_attachment_with_filename(filename) AttachmentFilenameMatcher.new(filename) end def an_attachment_with_mime_type(filename) AttachmentMimeTypeMatcher.new(filename) end class AnyAttachmentMatcher def ===(other) other.attachment? end end class AttachmentFilenameMatcher attr_reader :filename def initialize(filename) @filename = filename end def ===(other) other.attachment? && other.filename == filename end end class AttachmentMimeTypeMatcher attr_reader :mime_type def initialize(mime_type) @mime_type = mime_type end def ===(other) other.attachment? && other.mime_type == mime_type end end end end mail-2.8.1/lib/mail/matchers/has_sent_mail.rb000066400000000000000000000131761436372131700211140ustar00rootroot00000000000000# frozen_string_literal: true module Mail module Matchers def have_sent_email HasSentEmailMatcher.new(self) end class HasSentEmailMatcher def initialize(_context) end def matches?(subject) matching_deliveries = filter_matched_deliveries(Mail::TestMailer.deliveries) !(matching_deliveries.empty?) end def from(sender) @sender = sender self end def to(recipient_or_list) @recipients ||= [] if recipient_or_list.kind_of?(Array) @recipients += recipient_or_list else @recipients << recipient_or_list end self end def cc(recipient_or_list) @copy_recipients ||= [] if recipient_or_list.kind_of?(Array) @copy_recipients += recipient_or_list else @copy_recipients << recipient_or_list end self end def bcc(recipient_or_list) @blind_copy_recipients ||= [] @blind_copy_recipients.concat(Array(recipient_or_list)) self end def with_attachments(attachments) @attachments ||= [] @attachments.concat(Array(attachments)) self end def with_no_attachments @having_attachments = false self end def with_any_attachments @having_attachments = true self end def with_subject(subject) @subject = subject self end def matching_subject(subject_matcher) @subject_matcher = subject_matcher self end def with_body(body) @body = body self end def matching_body(body_matcher) @body_matcher = body_matcher self end def with_html(body) @html_part_body = body self end def with_text(body) @text_part_body = body self end def description result = "send a matching email" result end def failure_message result = "Expected email to be sent " result += explain_expectations result += dump_deliveries result end def failure_message_when_negated result = "Expected no email to be sent " result += explain_expectations result += dump_deliveries result end protected def filter_matched_deliveries(deliveries) candidate_deliveries = deliveries modifiers = %w(sender recipients copy_recipients blind_copy_recipients subject subject_matcher body body_matcher html_part_body text_part_body having_attachments attachments) modifiers.each do |modifier_name| next unless instance_variable_defined?("@#{modifier_name}") candidate_deliveries = candidate_deliveries.select{|matching_delivery| self.send("matches_on_#{modifier_name}?", matching_delivery)} end candidate_deliveries end def matches_on_sender?(delivery) delivery.from.include?(@sender) end def matches_on_recipients?(delivery) @recipients.all? {|recipient| delivery.to.include?(recipient) } end def matches_on_copy_recipients?(delivery) @copy_recipients.all? {|recipient| delivery.cc.include?(recipient) } end def matches_on_blind_copy_recipients?(delivery) @blind_copy_recipients.all? {|recipient| delivery.bcc.include?(recipient) } end def matches_on_subject?(delivery) delivery.subject == @subject end def matches_on_subject_matcher?(delivery) @subject_matcher.match delivery.subject end def matches_on_having_attachments?(delivery) @having_attachments && delivery.attachments.any? || (!@having_attachments && delivery.attachments.none?) end def matches_on_attachments?(delivery) @attachments.each_with_index.inject( true ) do |sent_attachments, (attachment, index)| sent_attachments &&= (attachment === delivery.attachments[index]) end end def matches_on_body?(delivery) delivery.body == @body end def matches_on_body_matcher?(delivery) @body_matcher.match delivery.body.raw_source end def matches_on_html_part_body?(delivery) delivery.html_part.body == @html_part_body end def matches_on_text_part_body?(delivery) delivery.text_part.body == @text_part_body end def explain_expectations result = '' result += "from #{@sender} " if instance_variable_defined?('@sender') result += "to #{@recipients.inspect} " if instance_variable_defined?('@recipients') result += "cc #{@copy_recipients.inspect} " if instance_variable_defined?('@copy_recipients') result += "bcc #{@blind_copy_recipients.inspect} " if instance_variable_defined?('@blind_copy_recipients') result += "with subject \"#{@subject}\" " if instance_variable_defined?('@subject') result += "with subject matching \"#{@subject_matcher}\" " if instance_variable_defined?('@subject_matcher') result += "with body \"#{@body}\" " if instance_variable_defined?('@body') result += "with body matching \"#{@body_matcher}\" " if instance_variable_defined?('@body_matcher') result += "with a text part matching \"#{@text_part_body}\" " if instance_variable_defined?('@text_part_body') result += "with an HTML part matching \"#{@html_part_body}\" " if instance_variable_defined?('@html_part_body') result end def dump_deliveries "(actual deliveries: " + Mail::TestMailer.deliveries.inspect + ")" end end end end mail-2.8.1/lib/mail/message.rb000066400000000000000000002034661436372131700161270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' require 'mail/utilities' require 'mail/yaml' module Mail # The Message class provides a single point of access to all things to do with an # email message. # # You create a new email message by calling the Mail::Message.new method, or just # Mail.new # # A Message object by default has the following objects inside it: # # * A Header object which contains all information and settings of the header of the email # * Body object which contains all parts of the email that are not part of the header, this # includes any attachments, body text, MIME parts etc. # # ==Per RFC2822 # # 2.1. General Description # # At the most basic level, a message is a series of characters. A # message that is conformant with this standard is comprised of # characters with values in the range 1 through 127 and interpreted as # US-ASCII characters [ASCII]. For brevity, this document sometimes # refers to this range of characters as simply "US-ASCII characters". # # Note: This standard specifies that messages are made up of characters # in the US-ASCII range of 1 through 127. There are other documents, # specifically the MIME document series [RFC2045, RFC2046, RFC2047, # RFC2048, RFC2049], that extend this standard to allow for values # outside of that range. Discussion of those mechanisms is not within # the scope of this standard. # # Messages are divided into lines of characters. A line is a series of # characters that is delimited with the two characters carriage-return # and line-feed; that is, the carriage return (CR) character (ASCII # value 13) followed immediately by the line feed (LF) character (ASCII # value 10). (The carriage-return/line-feed pair is usually written in # this document as "CRLF".) # # A message consists of header fields (collectively called "the header # of the message") followed, optionally, by a body. The header is a # sequence of lines of characters with special syntax as defined in # this standard. The body is simply a sequence of characters that # follows the header and is separated from the header by an empty line # (i.e., a line with nothing preceding the CRLF). class Message # ==Making an email # # You can make an new mail object via a block, passing a string, file or direct assignment. # # ===Making an email via a block # # mail = Mail.new do |m| # m.from 'mikel@test.lindsaar.net' # m.to 'you@test.lindsaar.net' # m.subject 'This is a test email' # m.body File.read('body.txt') # end # # mail.to_s #=> "From: mikel@test.lindsaar.net\r\nTo: you@... # # If may also pass a block with no arguments, in which case it will # be evaluated in the scope of the new message instance: # # mail = Mail.new do # from 'mikel@test.lindsaar.net' # # … # end # # ===Making an email via passing a string # # mail = Mail.new("To: mikel@test.lindsaar.net\r\nSubject: Hello\r\n\r\nHi there!") # mail.body.to_s #=> 'Hi there!' # mail.subject #=> 'Hello' # mail.to #=> 'mikel@test.lindsaar.net' # # ===Making an email from a file # # mail = Mail.read('path/to/file.eml') # mail.body.to_s #=> 'Hi there!' # mail.subject #=> 'Hello' # mail.to #=> 'mikel@test.lindsaar.net' # # ===Making an email via assignment # # You can assign values to a mail object via four approaches: # # * Message#field_name=(value) # * Message#field_name(value) # * Message#['field_name']=(value) # * Message#[:field_name]=(value) # # Examples: # # mail = Mail.new # mail['from'] = 'mikel@test.lindsaar.net' # mail[:to] = 'you@test.lindsaar.net' # mail.subject 'This is a test email' # mail.body = 'This is a body' # # mail.to_s #=> "From: mikel@test.lindsaar.net\r\nTo: you@... # def initialize(*args, &block) @body = nil @body_raw = nil @separate_parts = false @text_part = nil @html_part = nil @errors = nil @header = nil @charset = self.class.default_charset @defaulted_charset = true @smtp_envelope_from = nil @smtp_envelope_to = nil @perform_deliveries = true @raise_delivery_errors = true @delivery_handler = nil @delivery_method = Mail.delivery_method.dup @transport_encoding = Mail::Encodings.get_encoding('7bit') @mark_for_delete = false if args.flatten.first.respond_to?(:each_pair) init_with_hash(args.flatten.first) else init_with_string(args.flatten[0].to_s) end # Support both builder styles: # # Mail.new do # to 'recipient@example.com' # end # # and # # Mail.new do |m| # m.to 'recipient@example.com' # end if block_given? if block.arity.zero? instance_eval(&block) else yield self end end self end # If you assign a delivery handler, mail will call :deliver_mail on the # object you assign to delivery_handler, it will pass itself as the # single argument. # # If you define a delivery_handler, then you are responsible for the # following actions in the delivery cycle: # # * Appending the mail object to Mail.deliveries as you see fit. # * Checking the mail.perform_deliveries flag to decide if you should # actually call :deliver! the mail object or not. # * Checking the mail.raise_delivery_errors flag to decide if you # should raise delivery errors if they occur. # * Actually calling :deliver! (with the bang) on the mail object to # get it to deliver itself. # # A simplest implementation of a delivery_handler would be # # class MyObject # # def initialize # @mail = Mail.new('To: mikel@test.lindsaar.net') # @mail.delivery_handler = self # end # # attr_accessor :mail # # def deliver_mail(mail) # yield # end # end # # Then doing: # # obj = MyObject.new # obj.mail.deliver # # Would cause Mail to call obj.deliver_mail passing itself as a parameter, # which then can just yield and let Mail do its own private do_delivery # method. attr_accessor :delivery_handler # If set to false, mail will go through the motions of doing a delivery, # but not actually call the delivery method or append the mail object to # the Mail.deliveries collection. Useful for testing. # # Mail.deliveries.size #=> 0 # mail.delivery_method :smtp # mail.perform_deliveries = false # mail.deliver # Mail::SMTP not called here # Mail.deliveries.size #=> 0 # # If you want to test and query the Mail.deliveries collection to see what # mail you sent, you should set perform_deliveries to true and use # the :test mail delivery_method: # # Mail.deliveries.size #=> 0 # mail.delivery_method :test # mail.perform_deliveries = true # mail.deliver # Mail.deliveries.size #=> 1 # # This setting is ignored by mail (though still available as a flag) if you # define a delivery_handler attr_accessor :perform_deliveries # If set to false, mail will silently catch and ignore any exceptions # raised through attempting to deliver an email. # # This setting is ignored by mail (though still available as a flag) if you # define a delivery_handler attr_accessor :raise_delivery_errors def self.default_charset; @@default_charset; end def self.default_charset=(charset); @@default_charset = charset; end self.default_charset = 'UTF-8' def inform_observers Mail.inform_observers(self) end def inform_interceptors Mail.inform_interceptors(self) end # Delivers a mail object. # # Examples: # # mail = Mail.read('file.eml') # mail.deliver def deliver inform_interceptors if delivery_handler delivery_handler.deliver_mail(self) { do_delivery } else do_delivery end inform_observers self end # This method bypasses checking perform_deliveries and raise_delivery_errors, # so use with caution. # # It still however fires off the interceptors and calls the observers callbacks if they are defined. # # Returns self def deliver! inform_interceptors response = delivery_method.deliver!(self) inform_observers delivery_method.settings[:return_response] ? response : self end def delivery_method(method = nil, settings = {}) unless method @delivery_method else @delivery_method = Configuration.instance.lookup_delivery_method(method).new(settings) end end def reply(*args, &block) self.class.new.tap do |reply| if message_id bracketed_message_id = "<#{message_id}>" reply.in_reply_to = bracketed_message_id if !references.nil? refs = [references].flatten.map { |r| "<#{r}>" } refs << bracketed_message_id reply.references = refs.join(' ') elsif !in_reply_to.nil? && !in_reply_to.kind_of?(Array) reply.references = "<#{in_reply_to}> #{bracketed_message_id}" end reply.references ||= bracketed_message_id end if subject reply.subject = subject =~ /^Re:/i ? subject : "Re: #{subject}" end if reply_to || from reply.to = self[reply_to ? :reply_to : :from].to_s end if to reply.from = self[:to].formatted.first.to_s end unless args.empty? if args.flatten.first.respond_to?(:each_pair) reply.send(:init_with_hash, args.flatten.first) else reply.send(:init_with_string, args.flatten[0].to_s.strip) end end if block_given? reply.instance_eval(&block) end end end # Provides the operator needed for sort et al. # # Compares this mail object with another mail object, this is done by date, so an # email that is older than another will appear first. # # Example: # # mail1 = Mail.new do # date(Time.now) # end # mail2 = Mail.new do # date(Time.now - 86400) # 1 day older # end # [mail2, mail1].sort #=> [mail2, mail1] def <=>(other) if other.nil? 1 else self.date <=> other.date end end # Two emails are the same if they have the same fields and body contents. One # gotcha here is that Mail will insert Message-IDs when calling encoded, so doing # mail1.encoded == mail2.encoded is most probably not going to return what you think # as the assigned Message-IDs by Mail (if not already defined as the same) will ensure # that the two objects are unique, and this comparison will ALWAYS return false. # # So the == operator has been defined like so: Two messages are the same if they have # the same content, ignoring the Message-ID field, unless BOTH emails have a defined and # different Message-ID value, then they are false. # # So, in practice the == operator works like this: # # m1 = Mail.new("Subject: Hello\r\n\r\nHello") # m2 = Mail.new("Subject: Hello\r\n\r\nHello") # m1 == m2 #=> true # # m1 = Mail.new("Subject: Hello\r\n\r\nHello") # m2 = Mail.new("Message-ID: <1234@test>\r\nSubject: Hello\r\n\r\nHello") # m1 == m2 #=> true # # m1 = Mail.new("Message-ID: <1234@test>\r\nSubject: Hello\r\n\r\nHello") # m2 = Mail.new("Subject: Hello\r\n\r\nHello") # m1 == m2 #=> true # # m1 = Mail.new("Message-ID: <1234@test>\r\nSubject: Hello\r\n\r\nHello") # m2 = Mail.new("Message-ID: <1234@test>\r\nSubject: Hello\r\n\r\nHello") # m1 == m2 #=> true # # m1 = Mail.new("Message-ID: <1234@test>\r\nSubject: Hello\r\n\r\nHello") # m2 = Mail.new("Message-ID: \r\nSubject: Hello\r\n\r\nHello") # m1 == m2 #=> false def ==(other) return false unless other.respond_to?(:encoded) if self.message_id && other.message_id self.encoded == other.encoded else dup.tap { |m| m.message_id = '' }.encoded == other.dup.tap { |m| m.message_id = '' }.encoded end end def initialize_copy(original) super @header = @header.dup end # Provides access to the raw source of the message as it was when it # was instantiated. This is set at initialization and so is untouched # by the parsers or decoder / encoders # # Example: # # mail = Mail.new('This is an invalid email message') # mail.raw_source #=> "This is an invalid email message" def raw_source @raw_source end # Sets the envelope from for the email def set_envelope(val) @raw_envelope = val @envelope = Mail::Envelope.parse(val) rescue nil end # The raw_envelope is the From mikel@test.lindsaar.net Mon May 2 16:07:05 2009 # type field that you can see at the top of any email that has come # from a mailbox def raw_envelope @raw_envelope end def envelope_from @envelope ? @envelope.from : nil end def envelope_date @envelope ? @envelope.date : nil end # Sets the header of the message object. # # Example: # # mail.header = 'To: mikel@test.lindsaar.net\r\nFrom: Bob@bob.com' # mail.header #=> <#Mail::Header def header=(value) @header = Mail::Header.new(value, charset) end # Returns the header object of the message object. Or, if passed # a parameter sets the value. # # Example: # # mail = Mail::Message.new('To: mikel\r\nFrom: you') # mail.header #=> # 1 # message.errors.first[0] #=> "Content-Transfer-Encoding" # message.errors.first[1] #=> "weirdo" # message.errors.first[3] #=> # # This is a good first defence on detecting spam by the way. Some spammers send # invalid emails to try and get email parsers to give up parsing them. def errors header.errors end # Returns the Bcc value of the mail object as an array of strings of # address specs. # # Example: # # mail.bcc = 'Mikel ' # mail.bcc #=> ['mikel@test.lindsaar.net'] # mail.bcc = 'Mikel , ada@test.lindsaar.net' # mail.bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.bcc 'Mikel ' # mail.bcc #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.bcc 'Mikel ' # mail.bcc << 'ada@test.lindsaar.net' # mail.bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def bcc( val = nil ) default :bcc, val end # Sets the Bcc value of the mail object, pass in a string of the field # # Example: # # mail.bcc = 'Mikel ' # mail.bcc #=> ['mikel@test.lindsaar.net'] # mail.bcc = 'Mikel , ada@test.lindsaar.net' # mail.bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def bcc=( val ) header[:bcc] = val end # Returns the Cc value of the mail object as an array of strings of # address specs. # # Example: # # mail.cc = 'Mikel ' # mail.cc #=> ['mikel@test.lindsaar.net'] # mail.cc = 'Mikel , ada@test.lindsaar.net' # mail.cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.cc 'Mikel ' # mail.cc #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.cc 'Mikel ' # mail.cc << 'ada@test.lindsaar.net' # mail.cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def cc( val = nil ) default :cc, val end # Sets the Cc value of the mail object, pass in a string of the field # # Example: # # mail.cc = 'Mikel ' # mail.cc #=> ['mikel@test.lindsaar.net'] # mail.cc = 'Mikel , ada@test.lindsaar.net' # mail.cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def cc=( val ) header[:cc] = val end def comments( val = nil ) default :comments, val end def comments=( val ) header[:comments] = val end def content_description( val = nil ) default :content_description, val end def content_description=( val ) header[:content_description] = val end def content_disposition( val = nil ) default :content_disposition, val end def content_disposition=( val ) header[:content_disposition] = val end def content_id( val = nil ) default :content_id, val end def content_id=( val ) header[:content_id] = val end def content_location( val = nil ) default :content_location, val end def content_location=( val ) header[:content_location] = val end def content_transfer_encoding( val = nil ) default :content_transfer_encoding, val end def content_transfer_encoding=( val ) header[:content_transfer_encoding] = val end def content_type( val = nil ) default :content_type, val end def content_type=( val ) header[:content_type] = val end def date( val = nil ) default :date, val end def date=( val ) header[:date] = val end def transport_encoding( val = nil) if val self.transport_encoding = val else @transport_encoding end end def transport_encoding=( val ) @transport_encoding = Mail::Encodings.get_encoding(val) end # Returns the From value of the mail object as an array of strings of # address specs. # # Example: # # mail.from = 'Mikel ' # mail.from #=> ['mikel@test.lindsaar.net'] # mail.from = 'Mikel , ada@test.lindsaar.net' # mail.from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.from 'Mikel ' # mail.from #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.from 'Mikel ' # mail.from << 'ada@test.lindsaar.net' # mail.from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def from( val = nil ) default :from, val end # Sets the From value of the mail object, pass in a string of the field # # Example: # # mail.from = 'Mikel ' # mail.from #=> ['mikel@test.lindsaar.net'] # mail.from = 'Mikel , ada@test.lindsaar.net' # mail.from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def from=( val ) header[:from] = val end def in_reply_to( val = nil ) default :in_reply_to, val end def in_reply_to=( val ) header[:in_reply_to] = val end def keywords( val = nil ) default :keywords, val end def keywords=( val ) header[:keywords] = val end # Returns the Message-ID of the mail object. Note, per RFC 2822 the Message ID # consists of what is INSIDE the < > usually seen in the mail header, so this method # will return only what is inside. # # Example: # # mail.message_id = '<1234@message.id>' # mail.message_id #=> '1234@message.id' # # Also allows you to set the Message-ID by passing a string as a parameter # # mail.message_id '<1234@message.id>' # mail.message_id #=> '1234@message.id' def message_id( val = nil ) default :message_id, val end # Sets the Message-ID. Note, per RFC 2822 the Message ID consists of what is INSIDE # the < > usually seen in the mail header, so this method will return only what is inside. # # mail.message_id = '<1234@message.id>' # mail.message_id #=> '1234@message.id' def message_id=( val ) header[:message_id] = val end # Returns the MIME version of the email as a string # # Example: # # mail.mime_version = '1.0' # mail.mime_version #=> '1.0' # # Also allows you to set the MIME version by passing a string as a parameter. # # Example: # # mail.mime_version '1.0' # mail.mime_version #=> '1.0' def mime_version( val = nil ) default :mime_version, val end # Sets the MIME version of the email by accepting a string # # Example: # # mail.mime_version = '1.0' # mail.mime_version #=> '1.0' def mime_version=( val ) header[:mime_version] = val end def received( val = nil ) if val header[:received] = val else header[:received] end end def received=( val ) header[:received] = val end def references( val = nil ) default :references, val end def references=( val ) header[:references] = val end # Returns the Reply-To value of the mail object as an array of strings of # address specs. # # Example: # # mail.reply_to = 'Mikel ' # mail.reply_to #=> ['mikel@test.lindsaar.net'] # mail.reply_to = 'Mikel , ada@test.lindsaar.net' # mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.reply_to 'Mikel ' # mail.reply_to #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.reply_to 'Mikel ' # mail.reply_to << 'ada@test.lindsaar.net' # mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def reply_to( val = nil ) default :reply_to, val end # Sets the Reply-To value of the mail object, pass in a string of the field # # Example: # # mail.reply_to = 'Mikel ' # mail.reply_to #=> ['mikel@test.lindsaar.net'] # mail.reply_to = 'Mikel , ada@test.lindsaar.net' # mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def reply_to=( val ) header[:reply_to] = val end # Returns the Resent-Bcc value of the mail object as an array of strings of # address specs. # # Example: # # mail.resent_bcc = 'Mikel ' # mail.resent_bcc #=> ['mikel@test.lindsaar.net'] # mail.resent_bcc = 'Mikel , ada@test.lindsaar.net' # mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.resent_bcc 'Mikel ' # mail.resent_bcc #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.resent_bcc 'Mikel ' # mail.resent_bcc << 'ada@test.lindsaar.net' # mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_bcc( val = nil ) default :resent_bcc, val end # Sets the Resent-Bcc value of the mail object, pass in a string of the field # # Example: # # mail.resent_bcc = 'Mikel ' # mail.resent_bcc #=> ['mikel@test.lindsaar.net'] # mail.resent_bcc = 'Mikel , ada@test.lindsaar.net' # mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_bcc=( val ) header[:resent_bcc] = val end # Returns the Resent-Cc value of the mail object as an array of strings of # address specs. # # Example: # # mail.resent_cc = 'Mikel ' # mail.resent_cc #=> ['mikel@test.lindsaar.net'] # mail.resent_cc = 'Mikel , ada@test.lindsaar.net' # mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.resent_cc 'Mikel ' # mail.resent_cc #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.resent_cc 'Mikel ' # mail.resent_cc << 'ada@test.lindsaar.net' # mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_cc( val = nil ) default :resent_cc, val end # Sets the Resent-Cc value of the mail object, pass in a string of the field # # Example: # # mail.resent_cc = 'Mikel ' # mail.resent_cc #=> ['mikel@test.lindsaar.net'] # mail.resent_cc = 'Mikel , ada@test.lindsaar.net' # mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_cc=( val ) header[:resent_cc] = val end def resent_date( val = nil ) default :resent_date, val end def resent_date=( val ) header[:resent_date] = val end # Returns the Resent-From value of the mail object as an array of strings of # address specs. # # Example: # # mail.resent_from = 'Mikel ' # mail.resent_from #=> ['mikel@test.lindsaar.net'] # mail.resent_from = 'Mikel , ada@test.lindsaar.net' # mail.resent_from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.resent_from ['Mikel '] # mail.resent_from #=> 'mikel@test.lindsaar.net' # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.resent_from 'Mikel ' # mail.resent_from << 'ada@test.lindsaar.net' # mail.resent_from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_from( val = nil ) default :resent_from, val end # Sets the Resent-From value of the mail object, pass in a string of the field # # Example: # # mail.resent_from = 'Mikel ' # mail.resent_from #=> ['mikel@test.lindsaar.net'] # mail.resent_from = 'Mikel , ada@test.lindsaar.net' # mail.resent_from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_from=( val ) header[:resent_from] = val end def resent_message_id( val = nil ) default :resent_message_id, val end def resent_message_id=( val ) header[:resent_message_id] = val end # Returns the Resent-Sender value of the mail object, as a single string of an address # spec. A sender per RFC 2822 must be a single address, so you can not append to # this address. # # Example: # # mail.resent_sender = 'Mikel ' # mail.resent_sender #=> 'mikel@test.lindsaar.net' # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.resent_sender 'Mikel ' # mail.resent_sender #=> 'mikel@test.lindsaar.net' def resent_sender( val = nil ) default :resent_sender, val end # Sets the Resent-Sender value of the mail object, pass in a string of the field # # Example: # # mail.resent_sender = 'Mikel ' # mail.resent_sender #=> 'mikel@test.lindsaar.net' def resent_sender=( val ) header[:resent_sender] = val end # Returns the Resent-To value of the mail object as an array of strings of # address specs. # # Example: # # mail.resent_to = 'Mikel ' # mail.resent_to #=> ['mikel@test.lindsaar.net'] # mail.resent_to = 'Mikel , ada@test.lindsaar.net' # mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.resent_to 'Mikel ' # mail.resent_to #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.resent_to 'Mikel ' # mail.resent_to << 'ada@test.lindsaar.net' # mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_to( val = nil ) default :resent_to, val end # Sets the Resent-To value of the mail object, pass in a string of the field # # Example: # # mail.resent_to = 'Mikel ' # mail.resent_to #=> ['mikel@test.lindsaar.net'] # mail.resent_to = 'Mikel , ada@test.lindsaar.net' # mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def resent_to=( val ) header[:resent_to] = val end # Returns the return path of the mail object, or sets it if you pass a string def return_path( val = nil ) default :return_path, val end # Sets the return path of the object def return_path=( val ) header[:return_path] = val end # Returns the Sender value of the mail object, as a single string of an address # spec. A sender per RFC 2822 must be a single address. # # Example: # # mail.sender = 'Mikel ' # mail.sender #=> 'mikel@test.lindsaar.net' # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.sender 'Mikel ' # mail.sender #=> 'mikel@test.lindsaar.net' def sender( val = nil ) default :sender, val end # Sets the Sender value of the mail object, pass in a string of the field # # Example: # # mail.sender = 'Mikel ' # mail.sender #=> 'mikel@test.lindsaar.net' def sender=( val ) header[:sender] = val end # Returns the SMTP Envelope From value of the mail object, as a single # string of an address spec. # # Defaults to Return-Path, Sender, or the first From address. # # Example: # # mail.smtp_envelope_from = 'Mikel ' # mail.smtp_envelope_from #=> 'mikel@test.lindsaar.net' # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.smtp_envelope_from 'Mikel ' # mail.smtp_envelope_from #=> 'mikel@test.lindsaar.net' def smtp_envelope_from( val = nil ) if val self.smtp_envelope_from = val else @smtp_envelope_from || return_path || sender || from_addrs.first end end # Sets the From address on the SMTP Envelope. # # Example: # # mail.smtp_envelope_from = 'Mikel ' # mail.smtp_envelope_from #=> 'mikel@test.lindsaar.net' def smtp_envelope_from=( val ) @smtp_envelope_from = val end # Returns the SMTP Envelope To value of the mail object. # # Defaults to #destinations: To, Cc, and Bcc addresses. # # Example: # # mail.smtp_envelope_to = 'Mikel ' # mail.smtp_envelope_to #=> 'mikel@test.lindsaar.net' # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.smtp_envelope_to ['Mikel ', 'Lindsaar '] # mail.smtp_envelope_to #=> ['mikel@test.lindsaar.net', 'lindsaar@test.lindsaar.net'] def smtp_envelope_to( val = nil ) if val self.smtp_envelope_to = val else @smtp_envelope_to || destinations end end # Sets the To addresses on the SMTP Envelope. # # Example: # # mail.smtp_envelope_to = 'Mikel ' # mail.smtp_envelope_to #=> 'mikel@test.lindsaar.net' # # mail.smtp_envelope_to = ['Mikel ', 'Lindsaar '] # mail.smtp_envelope_to #=> ['mikel@test.lindsaar.net', 'lindsaar@test.lindsaar.net'] def smtp_envelope_to=( val ) @smtp_envelope_to = case val when Array, NilClass val else [val] end end # Returns the decoded value of the subject field, as a single string. # # Example: # # mail.subject = "G'Day mate" # mail.subject #=> "G'Day mate" # mail.subject = '=?UTF-8?Q?This_is_=E3=81=82_string?=' # mail.subject #=> "This is あ string" # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.subject "G'Day mate" # mail.subject #=> "G'Day mate" def subject( val = nil ) default :subject, val end # Sets the Subject value of the mail object, pass in a string of the field # # Example: # # mail.subject = '=?UTF-8?Q?This_is_=E3=81=82_string?=' # mail.subject #=> "This is あ string" def subject=( val ) header[:subject] = val end # Returns the To value of the mail object as an array of strings of # address specs. # # Example: # # mail.to = 'Mikel ' # mail.to #=> ['mikel@test.lindsaar.net'] # mail.to = 'Mikel , ada@test.lindsaar.net' # mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] # # Also allows you to set the value by passing a value as a parameter # # Example: # # mail.to 'Mikel ' # mail.to #=> ['mikel@test.lindsaar.net'] # # Additionally, you can append new addresses to the returned Array like # object. # # Example: # # mail.to 'Mikel ' # mail.to << 'ada@test.lindsaar.net' # mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def to( val = nil ) default :to, val end # Sets the To value of the mail object, pass in a string of the field # # Example: # # mail.to = 'Mikel ' # mail.to #=> ['mikel@test.lindsaar.net'] # mail.to = 'Mikel , ada@test.lindsaar.net' # mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net'] def to=( val ) header[:to] = val end # Returns the default value of the field requested as a symbol. # # Each header field has a :default method which returns the most common use case for # that field, for example, the date field types will return a DateTime object when # sent :default, the subject, or unstructured fields will return a decoded string of # their value, the address field types will return a single addr_spec or an array of # addr_specs if there is more than one. def default( sym, val = nil ) if val header[sym] = val elsif field = header[sym] field.default end end # Sets the body object of the message object. # # Example: # # mail.body = 'This is the body' # mail.body #=> # 2 # mail.parts.last.content_type.content_type #=> 'This is a body' def body=(value) body_lazy(value) end # Returns the body of the message object. Or, if passed # a parameter sets the value. # # Example: # # mail = Mail::Message.new('To: mikel\r\n\r\nThis is the body') # mail.body #=> # 3 # mail.destinations.first #=> 'mikel@test.lindsaar.net' def destinations [to_addrs, cc_addrs, bcc_addrs].compact.flatten end # Returns an array of addresses (the encoded value) in the From field, # if no From field, returns an empty array def from_addrs from ? [from].flatten : [] end # Returns an array of addresses (the encoded value) in the To field, # if no To field, returns an empty array def to_addrs to ? [to].flatten : [] end # Returns an array of addresses (the encoded value) in the Cc field, # if no Cc field, returns an empty array def cc_addrs cc ? [cc].flatten : [] end # Returns an array of addresses (the encoded value) in the Bcc field, # if no Bcc field, returns an empty array def bcc_addrs bcc ? [bcc].flatten : [] end # Allows you to add an arbitrary header # # Example: # # mail['foo'] = '1234' # mail['foo'].to_s #=> '1234' def []=(name, value) if name.to_s == 'body' self.body = value elsif name.to_s =~ /content[-_]type/i header[name] = value elsif name.to_s == 'charset' self.charset = value else header[name] = value end end # Allows you to read an arbitrary header # # Example: # # mail['foo'] = '1234' # mail['foo'].to_s #=> '1234' def [](name) header[Utilities.underscoreize(name)] end # Method Missing in this implementation allows you to set any of the # standard fields directly as you would the "to", "subject" etc. # # Those fields used most often (to, subject et al) are given their # own method for ease of documentation and also to avoid the hook # call to method missing. # # This will only catch the known fields listed in: # # Mail::Field::KNOWN_FIELDS # # as per RFC 2822, any ruby string or method name could pretty much # be a field name, so we don't want to just catch ANYTHING sent to # a message object and interpret it as a header. # # This method provides all three types of header call to set, read # and explicitly set with the = operator # # Examples: # # mail.comments = 'These are some comments' # mail.comments #=> 'These are some comments' # # mail.comments 'These are other comments' # mail.comments #=> 'These are other comments' # # # mail.date = 'Tue, 1 Jul 2003 10:52:37 +0200' # mail.date.to_s #=> 'Tue, 1 Jul 2003 10:52:37 +0200' # # mail.date 'Tue, 1 Jul 2003 10:52:37 +0200' # mail.date.to_s #=> 'Tue, 1 Jul 2003 10:52:37 +0200' # # # mail.resent_msg_id = '<1234@resent_msg_id.lindsaar.net>' # mail.resent_msg_id #=> '<1234@resent_msg_id.lindsaar.net>' # # mail.resent_msg_id '<4567@resent_msg_id.lindsaar.net>' # mail.resent_msg_id #=> '<4567@resent_msg_id.lindsaar.net>' def method_missing(name, *args, &block) #:nodoc: # Only take the structured fields, as we could take _anything_ really # as it could become an optional field... "but therin lies the dark side" field_name = Utilities.underscoreize(name).chomp("=") if Mail::Field::KNOWN_FIELDS.include?(field_name) if args.empty? header[field_name] else header[field_name] = args.first end else super # otherwise pass it on end #:startdoc: end # Returns an FieldList of all the fields in the header in the order that # they appear in the header def header_fields header.fields end # Returns true if the message has a message ID field, the field may or may # not have a value, but the field exists or not. def has_message_id? header.has_message_id? end # Returns true if the message has a Date field, the field may or may # not have a value, but the field exists or not. def has_date? header.has_date? end # Returns true if the message has a Mime-Version field, the field may or may # not have a value, but the field exists or not. def has_mime_version? header.has_mime_version? end def has_content_type? tmp = header[:content_type].main_type rescue nil !!tmp end def has_charset? tmp = header[:content_type].parameters rescue nil !!(has_content_type? && tmp && tmp['charset']) end def has_content_transfer_encoding? header[:content_transfer_encoding] && Utilities.blank?(header[:content_transfer_encoding].errors) end # Creates a new empty Message-ID field and inserts it in the correct order # into the Header. The MessageIdField object will automatically generate # a unique message ID if you try and encode it or output it to_s without # specifying a message id. # # It will preserve the message ID you specify if you do. def add_message_id(msg_id_val = '') header['message-id'] = msg_id_val end # Creates a new empty Date field and inserts it in the correct order # into the Header. The DateField object will automatically generate # DateTime.now's date if you try and encode it or output it to_s without # specifying a date yourself. # # It will preserve any date you specify if you do. def add_date(date_val = '') header['date'] = date_val end # Creates a new empty Mime Version field and inserts it in the correct order # into the Header. The MimeVersion object will automatically generate # set itself to '1.0' if you try and encode it or output it to_s without # specifying a version yourself. # # It will preserve any date you specify if you do. def add_mime_version(ver_val = '') header['mime-version'] = ver_val end # Adds a content type and charset if the body is US-ASCII # # Otherwise raises a warning def add_content_type header[:content_type] = 'text/plain' end # Adds a content type and charset if the body is US-ASCII # # Otherwise raises a warning def add_charset if !body.empty? # Only give a warning if this isn't an attachment, has non US-ASCII and the user # has not specified an encoding explicitly. if @defaulted_charset && !body.raw_source.ascii_only? && !self.attachment? warning = "Non US-ASCII detected and no charset defined.\nDefaulting to UTF-8, set your own if this is incorrect.\n" warn(warning) end if @charset header[:content_type].parameters['charset'] = @charset end end end # Adds a content transfer encoding def add_content_transfer_encoding header[:content_transfer_encoding] ||= body.default_encoding end # Returns the MIME media type of part we are on, this is taken from the content-type header def mime_type has_content_type? ? header[:content_type].string : nil rescue nil end # Returns the character set defined in the content type field def charset if @header has_content_type? && !multipart? ? content_type_parameters['charset'] : @charset else @charset end end # Sets the charset to the supplied value. def charset=(value) @defaulted_charset = false @charset = value @header.charset = value end # Returns the main content type def main_type has_content_type? ? header[:content_type].main_type : nil rescue nil end # Returns the sub content type def sub_type has_content_type? ? header[:content_type].sub_type : nil rescue nil end # Returns the content type parameters def content_type_parameters has_content_type? ? header[:content_type].parameters : nil rescue nil end # Returns true if the message is multipart def multipart? has_content_type? ? !!(main_type =~ /^multipart$/i) : false end # Returns true if the message is a multipart/report def multipart_report? multipart? && sub_type =~ /^report$/i end # Returns true if the message is a multipart/report; report-type=delivery-status; def delivery_status_report? multipart_report? && content_type_parameters['report-type'] =~ /^delivery-status$/i end # returns the part in a multipart/report email that has the content-type delivery-status def delivery_status_part unless defined? @delivery_status_part @delivery_status_part = if delivery_status_report? parts.detect(&:delivery_status_report_part?) end end @delivery_status_part end def bounced? delivery_status_part and delivery_status_part.bounced? end def action delivery_status_part and delivery_status_part.action end def final_recipient delivery_status_part and delivery_status_part.final_recipient end def error_status delivery_status_part and delivery_status_part.error_status end def diagnostic_code delivery_status_part and delivery_status_part.diagnostic_code end def remote_mta delivery_status_part and delivery_status_part.remote_mta end def retryable? delivery_status_part and delivery_status_part.retryable? end # Returns the current boundary for this message part def boundary content_type_parameters ? content_type_parameters['boundary'] : nil end # Returns a parts list object of all the parts in the message def parts body.parts end # Returns an AttachmentsList object, which holds all of the attachments in # the receiver object (either the entire email or a part within) and all # of its descendants. # # It also allows you to add attachments to the mail object directly, like so: # # mail.attachments['filename.jpg'] = File.read('/path/to/filename.jpg') # # If you do this, then Mail will take the file name and work out the MIME media type # set the Content-Type, Content-Disposition, Content-Transfer-Encoding and # base64 encode the contents of the attachment all for you. # # You can also specify overrides if you want by passing a hash instead of a string: # # mail.attachments['filename.jpg'] = {:mime_type => 'application/x-gzip', # :content => File.read('/path/to/filename.jpg')} # # If you want to use a different encoding than Base64, you can pass an encoding in, # but then it is up to you to pass in the content pre-encoded, and don't expect # Mail to know how to decode this data: # # file_content = SpecialEncode(File.read('/path/to/filename.jpg')) # mail.attachments['filename.jpg'] = {:mime_type => 'application/x-gzip', # :encoding => 'SpecialEncoding', # :content => file_content } # # You can also search for specific attachments: # # # By Filename # mail.attachments['filename.jpg'] #=> Mail::Part object or nil # # # or by index # mail.attachments[0] #=> Mail::Part (first attachment) # def attachments parts.attachments end def has_attachments? !attachments.empty? end # Accessor for html_part def html_part(&block) if block_given? self.html_part = Mail::Part.new(:content_type => 'text/html', &block) else @html_part || find_first_mime_type('text/html') end end # Accessor for text_part def text_part(&block) if block_given? self.text_part = Mail::Part.new(:content_type => 'text/plain', &block) else @text_part || find_first_mime_type('text/plain') end end # Helper to add a html part to a multipart/alternative email. If this and # text_part are both defined in a message, then it will be a multipart/alternative # message and set itself that way. def html_part=(msg) # Assign the html part and set multipart/alternative if there's a text part. if msg msg = Mail::Part.new(:body => msg) unless msg.kind_of?(Mail::Message) @html_part = msg @html_part.content_type = 'text/html' unless @html_part.has_content_type? add_multipart_alternate_header if text_part add_part @html_part # If nil, delete the html part and back out of multipart/alternative. elsif @html_part parts.delete_if { |p| p.object_id == @html_part.object_id } @html_part = nil if text_part self.content_type = nil body.boundary = nil end end end # Helper to add a text part to a multipart/alternative email. If this and # html_part are both defined in a message, then it will be a multipart/alternative # message and set itself that way. def text_part=(msg) # Assign the text part and set multipart/alternative if there's an html part. if msg msg = Mail::Part.new(:body => msg) unless msg.kind_of?(Mail::Message) @text_part = msg @text_part.content_type = 'text/plain' unless @text_part.has_content_type? add_multipart_alternate_header if html_part add_part @text_part # If nil, delete the text part and back out of multipart/alternative. elsif @text_part parts.delete_if { |p| p.object_id == @text_part.object_id } @text_part = nil if html_part self.content_type = nil body.boundary = nil end end end # Adds a part to the parts list or creates the part list def add_part(part) if !body.multipart? && !Utilities.blank?(self.body.decoded) @text_part = Mail::Part.new('Content-Type: text/plain;') @text_part.body = body.decoded self.body << @text_part add_multipart_alternate_header end add_boundary self.body << part end # Allows you to add a part in block form to an existing mail message object # # Example: # # mail = Mail.new do # part :content_type => "multipart/alternative", :content_disposition => "inline" do |p| # p.part :content_type => "text/plain", :body => "test text\nline #2" # p.part :content_type => "text/html", :body => "test HTML
\nline #2" # end # end def part(params = {}) new_part = Part.new(params) yield new_part if block_given? add_part(new_part) end # Adds a file to the message. You have two options with this method, you can # just pass in the absolute path to the file you want and Mail will read the file, # get the filename from the path you pass in and guess the MIME media type, or you # can pass in the filename as a string, and pass in the file content as a blob. # # Example: # # m = Mail.new # m.add_file('/path/to/filename.png') # # m = Mail.new # m.add_file(:filename => 'filename.png', :content => File.read('/path/to/file.jpg')) # # Note also that if you add a file to an existing message, Mail will convert that message # to a MIME multipart email, moving whatever plain text body you had into its own text # plain part. # # Example: # # m = Mail.new do # body 'this is some text' # end # m.multipart? #=> false # m.add_file('/path/to/filename.png') # m.multipart? #=> true # m.parts.first.content_type.content_type #=> 'text/plain' # m.parts.last.content_type.content_type #=> 'image/png' # # See also #attachments def add_file(values) convert_to_multipart unless self.multipart? || Utilities.blank?(self.body.decoded) add_multipart_mixed_header if values.is_a?(String) basename = File.basename(values) filedata = File.open(values, 'rb') { |f| f.read } else basename = values[:filename] filedata = values end self.attachments[basename] = filedata end MULTIPART_CONVERSION_CONTENT_FIELDS = [ :content_description, :content_disposition, :content_transfer_encoding, :content_type ] private_constant :MULTIPART_CONVERSION_CONTENT_FIELDS if respond_to?(:private_constant) def convert_to_multipart text_part = Mail::Part.new(:body => body.decoded) MULTIPART_CONVERSION_CONTENT_FIELDS.each do |field_name| if value = send(field_name) writer = :"#{field_name}=" text_part.send writer, value send writer, nil end end text_part.charset = charset unless @defaulted_charset self.body = '' self.body << text_part end # Encodes the message, calls encode on all its parts, gets an email message # ready to send def ready_to_send! identify_and_set_transfer_encoding parts.each do |part| part.transport_encoding = transport_encoding part.ready_to_send! end add_required_fields end # Outputs an encoded string representation of the mail message including # all headers, attachments, etc. This is an encoded email in US-ASCII, # so it is able to be directly sent to an email server. def encoded ready_to_send! buffer = header.encoded buffer << "\r\n" buffer << body.encoded(content_transfer_encoding) buffer end def without_attachments! if has_attachments? parts.delete_attachments reencoded = parts.empty? ? '' : body.encoded(content_transfer_encoding) @body = nil # So the new parts won't be added to the existing body self.body = reencoded end self end def to_yaml(opts = {}) hash = {} hash['headers'] = {} header.fields.each do |field| hash['headers'][field.name] = field.value end hash['delivery_handler'] = delivery_handler.to_s if delivery_handler hash['transport_encoding'] = transport_encoding.to_s special_variables = [:@header, :@delivery_handler, :@transport_encoding] if multipart? hash['multipart_body'] = [] body.parts.map { |part| hash['multipart_body'] << part.to_yaml } special_variables.push(:@body, :@text_part, :@html_part) end (instance_variables.map(&:to_sym) - special_variables).each do |var| hash[var.to_s] = instance_variable_get(var) end hash.to_yaml(opts) end def self.from_yaml(str) hash = Mail::YAML.load(str) m = self.new(:headers => hash['headers']) hash.delete('headers') hash.each do |k,v| case when k == 'delivery_handler' begin m.delivery_handler = Object.const_get(v) unless Utilities.blank?(v) rescue NameError end when k == 'transport_encoding' m.transport_encoding(v) when k == 'multipart_body' v.map {|part| m.add_part Mail::Part.from_yaml(part) } when k =~ /^@/ m.instance_variable_set(k.to_sym, v) end end m end def self.from_hash(hash) Mail::Message.new(hash) end def to_s encoded end def inspect "#<#{self.class}:#{self.object_id}, Multipart: #{multipart?}, Headers: #{header.field_summary}>" end def inspect_structure inspect + if self.multipart? "\n" + parts.inspect_structure else '' end end def decoded case when self.text? decode_body_as_text when self.attachment? decode_body when !self.multipart? body.decoded else raise NoMethodError, 'Can not decode an entire message, try calling #decoded on the various fields and body or parts if it is a multipart message.' end end def read if self.attachment? decode_body else raise NoMethodError, 'Can not call read on a part unless it is an attachment.' end end def decode_body body.decoded end # Returns true if this part is an attachment, # false otherwise. def attachment? !!find_attachment end # Returns the attachment data if there is any def attachment @attachment end # Returns the filename of the attachment def filename find_attachment end def all_parts parts.map { |p| [p, p.all_parts] }.flatten end def find_first_mime_type(mt) all_parts.detect { |p| p.mime_type == mt && !p.attachment? } end # Skips the deletion of this message. All other messages # flagged for delete still will be deleted at session close (i.e. when # #find exits). Only has an effect if you're using #find_and_delete # or #find with :delete_after_find set to true. def skip_deletion @mark_for_delete = false end # Sets whether this message should be deleted at session close (i.e. # after #find). Message will only be deleted if messages are retrieved # using the #find_and_delete method, or by calling #find with # :delete_after_find set to true. def mark_for_delete=(value = true) @mark_for_delete = value end # Returns whether message will be marked for deletion. # If so, the message will be deleted at session close (i.e. after #find # exits), but only if also using the #find_and_delete method, or by # calling #find with :delete_after_find set to true. # # Side-note: Just to be clear, this method will return true even if # the message hasn't yet been marked for delete on the mail server. # However, if this method returns true, it *will be* marked on the # server after each block yields back to #find or #find_and_delete. def is_marked_for_delete? return @mark_for_delete end def text? has_content_type? ? !!(main_type =~ /^text$/i) : false end private HEADER_SEPARATOR = /#{Constants::LAX_CRLF}#{Constants::LAX_CRLF}/ # 2.1. General Description # A message consists of header fields (collectively called "the header # of the message") followed, optionally, by a body. The header is a # sequence of lines of characters with special syntax as defined in # this standard. The body is simply a sequence of characters that # follows the header and is separated from the header by an empty line # (i.e., a line with nothing preceding the CRLF). def parse_message header_part, body_part = raw_source.lstrip.split(HEADER_SEPARATOR, 2) self.header = header_part self.body = body_part end def raw_source=(value) @raw_source = value end # see comments to body=. We take data and process it lazily def body_lazy(value) process_body_raw if @body_raw && value case when value == nil || value.length<=0 @body = Mail::Body.new('') @body_raw = nil add_encoding_to_body when @body && @body.multipart? self.text_part = value else @body_raw = value end end def process_body_raw @body = Mail::Body.new(@body_raw) @body_raw = nil separate_parts if @separate_parts add_encoding_to_body end def set_envelope_header raw_string = raw_source.to_s if match_data = raw_string.match(/\AFrom\s+([^:\s]#{Constants::TEXT}*)#{Constants::LAX_CRLF}/m) set_envelope(match_data[1]) self.raw_source = raw_string.sub(match_data[0], "") end end def separate_parts body.split!(boundary) end def allowed_encodings case mime_type when 'message/rfc822' [Encodings::SevenBit, Encodings::EightBit, Encodings::Binary] end end def add_encoding_to_body if has_content_transfer_encoding? @body.encoding = content_transfer_encoding end end def identify_and_set_transfer_encoding if body if body.multipart? self.content_transfer_encoding = @transport_encoding else self.content_transfer_encoding = body.negotiate_best_encoding(@transport_encoding, allowed_encodings).to_s end end end def add_required_fields add_required_message_fields add_multipart_mixed_header if body.multipart? add_content_type unless has_content_type? add_charset if text? && !has_charset? add_content_transfer_encoding unless has_content_transfer_encoding? end def add_required_message_fields add_date unless has_date? add_mime_version unless has_mime_version? add_message_id unless has_message_id? end def add_multipart_alternate_header header['content-type'] = ContentTypeField.with_boundary('multipart/alternative').value body.boundary = boundary end def add_boundary unless body.boundary && boundary unless header['content-type'] _charset = charset header['content-type'] = 'multipart/mixed' header['content-type'].parameters[:charset] = _charset end header['content-type'].parameters[:boundary] = ContentTypeField.generate_boundary body.boundary = boundary end end def add_multipart_mixed_header unless header['content-type'] header['content-type'] = ContentTypeField.with_boundary('multipart/mixed').value body.boundary = boundary end end def init_with_hash(hash) passed_in_options = IndifferentHash.new(hash) self.raw_source = '' @header = Mail::Header.new @body = Mail::Body.new @body_raw = nil # We need to store the body until last, as we need all headers added first body_content = nil passed_in_options.each_pair do |k,v| k = Utilities.underscoreize(k).to_sym if k.class == String if k == :headers self.headers(v) elsif k == :body body_content = v else self[k] = v end end if body_content self.body = body_content if has_content_transfer_encoding? body.encoding = content_transfer_encoding end end end def init_with_string(string) self.raw_source = string set_envelope_header parse_message @separate_parts = multipart? end # Returns the filename of the attachment (if it exists) or returns nil def find_attachment content_type_name = header[:content_type].filename rescue nil content_disp_name = header[:content_disposition].filename rescue nil content_loc_name = header[:content_location].location rescue nil case when content_disposition && content_disp_name filename = content_disp_name when content_type && content_type_name filename = content_type_name when content_location && content_loc_name filename = content_loc_name else filename = nil end filename = Mail::Encodings.decode_encode(filename, :decode) if filename rescue filename filename end def do_delivery begin if perform_deliveries delivery_method.deliver!(self) end rescue => e # Net::SMTP errors or sendmail pipe errors raise e if raise_delivery_errors end end def decode_body_as_text Encodings.transcode_charset decode_body, charset, 'UTF-8' end end end mail-2.8.1/lib/mail/multibyte.rb000066400000000000000000000067531436372131700165210ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/multibyte/chars' module Mail #:nodoc: module Multibyte # Raised when a problem with the encoding was found. class EncodingError < StandardError; end class << self # The proxy class returned when calling mb_chars. You can use this accessor to configure your own proxy # class so you can support other encodings. See the Mail::Multibyte::Chars implementation for # an example how to do this. # # Example: # Mail::Multibyte.proxy_class = CharsForUTF32 attr_accessor :proxy_class end self.proxy_class = Mail::Multibyte::Chars # == Multibyte proxy # # +mb_chars+ is a multibyte safe proxy for string methods. # # In Ruby 1.8 and older it creates and returns an instance of the Mail::Multibyte::Chars class which # encapsulates the original string. A Unicode safe version of all the String methods are defined on this proxy # class. If the proxy class doesn't respond to a certain method, it's forwarded to the encapsuled string. # # name = 'Claus Müller' # name.reverse # => "rell??M sualC" # name.length # => 13 # # name.mb_chars.reverse.to_s # => "rellüM sualC" # name.mb_chars.length # => 12 # # In Ruby 1.9 and newer +mb_chars+ returns +self+ because String is (mostly) encoding aware. This means that # it becomes easy to run one version of your code on multiple Ruby versions. # # == Method chaining # # All the methods on the Chars proxy which normally return a string will return a Chars object. This allows # method chaining on the result of any of these methods. # # name.mb_chars.reverse.length # => 12 # # == Interoperability and configuration # # The Chars object tries to be as interchangeable with String objects as possible: sorting and comparing between # String and Char work like expected. The bang! methods change the internal string representation in the Chars # object. Interoperability problems can be resolved easily with a +to_s+ call. # # For more information about the methods defined on the Chars proxy see Mail::Multibyte::Chars. For # information about how to change the default Multibyte behaviour see Mail::Multibyte. def self.mb_chars(str) if is_utf8?(str) proxy_class.new(str) else str end end # Regular expressions that describe valid byte sequences for a character VALID_CHARACTER = { # Borrowed from the Kconv library by Shinji KONO - (also as seen on the W3C site) 'UTF-8' => /\A(?: [\x00-\x7f] | [\xc2-\xdf] [\x80-\xbf] | \xe0 [\xa0-\xbf] [\x80-\xbf] | [\xe1-\xef] [\x80-\xbf] [\x80-\xbf] | \xf0 [\x90-\xbf] [\x80-\xbf] [\x80-\xbf] | [\xf1-\xf3] [\x80-\xbf] [\x80-\xbf] [\x80-\xbf] | \xf4 [\x80-\x8f] [\x80-\xbf] [\x80-\xbf])\z /xn, # Quick check for valid Shift-JIS characters, disregards the odd-even pairing 'Shift_JIS' => /\A(?: [\x00-\x7e\xa1-\xdf] | [\x81-\x9f\xe0-\xef] [\x40-\x7e\x80-\x9e\x9f-\xfc])\z /xn } end end require 'mail/multibyte/utils' mail-2.8.1/lib/mail/multibyte/000077500000000000000000000000001436372131700161615ustar00rootroot00000000000000mail-2.8.1/lib/mail/multibyte/chars.rb000066400000000000000000000277741436372131700176270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/multibyte/unicode' module Mail #:nodoc: module Multibyte #:nodoc: # Chars enables you to work transparently with UTF-8 encoding in the Ruby String class without having extensive # knowledge about the encoding. A Chars object accepts a string upon initialization and proxies String methods in an # encoding safe manner. All the normal String methods are also implemented on the proxy. # # String methods are proxied through the Chars object, and can be accessed through the +mb_chars+ method. Methods # which would normally return a String object now return a Chars object so methods can be chained. # # "The Perfect String ".mb_chars.downcase.strip.normalize # => "the perfect string" # # Chars objects are perfectly interchangeable with String objects as long as no explicit class checks are made. # If certain methods do explicitly check the class, call +to_s+ before you pass chars objects to them. # # bad.explicit_checking_method "T".mb_chars.downcase.to_s # # The default Chars implementation assumes that the encoding of the string is UTF-8, if you want to handle different # encodings you can write your own multibyte string handler and configure it through # Mail::Multibyte.proxy_class. # # class CharsForUTF32 # def size # @wrapped_string.size / 4 # end # # def self.accepts?(string) # string.length % 4 == 0 # end # end # # Mail::Multibyte.proxy_class = CharsForUTF32 class Chars attr_reader :wrapped_string alias to_s wrapped_string alias to_str wrapped_string # Creates a new Chars instance by wrapping _string_. def initialize(string) @wrapped_string = string.dup @wrapped_string.force_encoding(Encoding::UTF_8) unless @wrapped_string.frozen? end # Forward all undefined methods to the wrapped string. def method_missing(method, *args, &block) if method.to_s =~ /!$/ @wrapped_string.__send__(method, *args, &block) self else result = @wrapped_string.__send__(method, *args, &block) result.kind_of?(String) ? chars(result) : result end end # Returns +true+ if _obj_ responds to the given method. Private methods are included in the search # only if the optional second parameter evaluates to +true+. def respond_to?(method, include_private=false) super || @wrapped_string.respond_to?(method, include_private) || false end # Enable more predictable duck-typing on String-like classes. See Object#acts_like?. def acts_like_string? true end include Comparable # Returns -1, 0, or 1, depending on whether the Chars object is to be sorted before, # equal or after the object on the right side of the operation. It accepts any object # that implements +to_s+: # # 'é'.mb_chars <=> 'ü'.mb_chars # => -1 # # See String#<=> for more details. def <=>(other) @wrapped_string <=> other.to_s end def =~(other) @wrapped_string =~ other end # Works just like String#split, with the exception that the items in the resulting list are Chars # instances instead of String. This makes chaining methods easier. # # Example: # Mail::Multibyte.mb_chars('Café périferôl').split(/é/).map { |part| part.upcase.to_s } # => ["CAF", " P", "RIFERÔL"] def split(*args) @wrapped_string.split(*args).map { |i| i.mb_chars } end # Like String#[]=, except instead of byte offsets you specify character offsets. # # Example: # # s = "Müller" # s.mb_chars[2] = "e" # Replace character with offset 2 # s # # => "Müeler" # # s = "Müller" # s.mb_chars[1, 2] = "ö" # Replace 2 characters at character offset 1 # s # # => "Möler" def []=(*args) replace_by = args.pop # Indexed replace with regular expressions already works if args.first.is_a?(Regexp) @wrapped_string[*args] = replace_by else result = Unicode.u_unpack(@wrapped_string) if args[0].is_a?(Integer) raise IndexError, "index #{args[0]} out of string" if args[0] >= result.length min = args[0] max = args[1].nil? ? min : (min + args[1] - 1) range = Range.new(min, max) replace_by = [replace_by].pack('U') if replace_by.is_a?(Integer) elsif args.first.is_a?(Range) raise RangeError, "#{args[0]} out of range" if args[0].min >= result.length range = args[0] else needle = args[0].to_s min = index(needle) max = min + Unicode.u_unpack(needle).length - 1 range = Range.new(min, max) end result[range] = Unicode.u_unpack(replace_by) @wrapped_string.replace(result.pack('U*')) end end # Reverses all characters in the string. # # Example: # Mail::Multibyte.mb_chars('Café').reverse.to_s # => 'éfaC' def reverse chars(Unicode.g_unpack(@wrapped_string).reverse.flatten.pack('U*')) end # Implements Unicode-aware slice with codepoints. Slicing on one point returns the codepoints for that # character. # # Example: # Mail::Multibyte.mb_chars('こんにちは').slice(2..3).to_s # => "にち" def slice(*args) if args.size > 2 raise ArgumentError, "wrong number of arguments (#{args.size} for 1)" # Do as if we were native elsif (args.size == 2 && !(args.first.is_a?(Numeric) || args.first.is_a?(Regexp))) raise TypeError, "cannot convert #{args.first.class} into Integer" # Do as if we were native elsif (args.size == 2 && !args[1].is_a?(Numeric)) raise TypeError, "cannot convert #{args[1].class} into Integer" # Do as if we were native elsif args[0].kind_of? Range cps = Unicode.u_unpack(@wrapped_string).slice(*args) result = cps.nil? ? nil : cps.pack('U*') elsif args[0].kind_of? Regexp result = @wrapped_string.slice(*args) elsif args.size == 1 && args[0].kind_of?(Numeric) character = Unicode.u_unpack(@wrapped_string)[args[0]] result = character && [character].pack('U') else cps = Unicode.u_unpack(@wrapped_string).slice(*args) result = cps && cps.pack('U*') end result && chars(result) end alias_method :[], :slice # Limit the byte size of the string to a number of bytes without breaking characters. Usable # when the storage for a string is limited for some reason. # # Example: # s = 'こんにちは' # s.mb_chars.limit(7) # => "こん" def limit(limit) slice(0...translate_offset(limit)) end # Convert characters in the string to uppercase. # # Example: # Mail::Multibyte.mb_chars('Laurent, où sont les tests ?').upcase.to_s # => "LAURENT, OÙ SONT LES TESTS ?" def upcase chars(Unicode.apply_mapping(@wrapped_string, :uppercase_mapping)) end # Convert characters in the string to lowercase. # # Example: # Mail::Multibyte.mb_chars('VĚDA A VÝZKUM').downcase.to_s # => "věda a výzkum" def downcase chars(Unicode.apply_mapping(@wrapped_string, :lowercase_mapping)) end # Converts the first character to uppercase and the remainder to lowercase. # # Example: # Mail::Multibyte.mb_chars('über').capitalize.to_s # => "Über" def capitalize (slice(0) || chars('')).upcase + (slice(1..-1) || chars('')).downcase end # Capitalizes the first letter of every word, when possible. # # Example: # Mail::Multibyte.mb_chars("ÉL QUE SE ENTERÓ").titleize # => "Él Que Se Enteró" # Mail::Multibyte.mb_chars("日本語").titleize # => "日本語" def titleize chars(downcase.to_s.gsub(/\b('?\S)/u) { Unicode.apply_mapping $1, :uppercase_mapping }) end alias_method :titlecase, :titleize # Returns the KC normalization of the string by default. NFKC is considered the best normalization form for # passing strings to databases and validations. # # * form - The form you want to normalize in. Should be one of the following: # :c, :kc, :d, or :kd. Default is # Mail::Multibyte::Unicode.default_normalization_form def normalize(form = nil) chars(Unicode.normalize(@wrapped_string, form)) end # Performs canonical decomposition on all the characters. # # Example: # 'é'.length # => 2 # Mail::Multibyte.mb_chars('é').decompose.to_s.length # => 3 def decompose chars(Unicode.decompose_codepoints(:canonical, Unicode.u_unpack(@wrapped_string)).pack('U*')) end # Performs composition on all the characters. # # Example: # 'é'.length # => 3 # Mail::Multibyte.mb_chars('é').compose.to_s.length # => 2 def compose chars(Unicode.compose_codepoints(Unicode.u_unpack(@wrapped_string)).pack('U*')) end # Returns the number of grapheme clusters in the string. # # Example: # Mail::Multibyte.mb_chars('क्षि').length # => 4 # Mail::Multibyte.mb_chars('क्षि').g_length # => 3 def g_length Unicode.g_unpack(@wrapped_string).length end # Replaces all ISO-8859-1 or CP1252 characters by their UTF-8 equivalent resulting in a valid UTF-8 string. # # Passing +true+ will forcibly tidy all bytes, assuming that the string's encoding is entirely CP1252 or ISO-8859-1. def tidy_bytes(force = false) chars(Unicode.tidy_bytes(@wrapped_string, force)) end %w(capitalize downcase lstrip reverse rstrip slice strip tidy_bytes upcase).each do |method| # Only define a corresponding bang method for methods defined in the proxy; On 1.9 the proxy will # exclude lstrip!, rstrip! and strip! because they are already work as expected on multibyte strings. if public_method_defined?(method) define_method("#{method}!") do |*args| @wrapped_string = send(method, *args).to_s self end end end protected def translate_offset(byte_offset) #:nodoc: return nil if byte_offset.nil? return 0 if @wrapped_string == '' if @wrapped_string.respond_to?(:force_encoding) @wrapped_string = @wrapped_string.dup.force_encoding(Encoding::ASCII_8BIT) end begin @wrapped_string[0...byte_offset].unpack('U*').length rescue ArgumentError byte_offset -= 1 retry end end def justify(integer, way, padstr=' ') #:nodoc: raise ArgumentError, "zero width padding" if padstr.length == 0 padsize = integer - size padsize = padsize > 0 ? padsize : 0 case way when :right result = @wrapped_string.dup.insert(0, padding(padsize, padstr)) when :left result = @wrapped_string.dup.insert(-1, padding(padsize, padstr)) when :center lpad = padding((padsize / 2.0).floor, padstr) rpad = padding((padsize / 2.0).ceil, padstr) result = @wrapped_string.dup.insert(0, lpad).insert(-1, rpad) end chars(result) end def padding(padsize, padstr=' ') #:nodoc: if padsize != 0 chars(padstr * ((padsize / Unicode.u_unpack(padstr).size) + 1)).slice(0, padsize) else '' end end def chars(string) #:nodoc: self.class.new(string) end end end end mail-2.8.1/lib/mail/multibyte/unicode.rb000066400000000000000000000362051436372131700201420ustar00rootroot00000000000000# frozen_string_literal: true module Mail module Multibyte module Unicode # Adapted from https://github.com/rails/rails/blob/master/activesupport/lib/active_support/multibyte/unicode.rb # under the MIT license # The Unicode version that is supported by the implementation UNICODE_VERSION = '7.0.0' # Holds data about a codepoint in the Unicode database. class Codepoint attr_accessor :code, :combining_class, :decomp_type, :decomp_mapping, :uppercase_mapping, :lowercase_mapping # Initializing Codepoint object with default values def initialize @combining_class = 0 @uppercase_mapping = 0 @lowercase_mapping = 0 end def swapcase_mapping uppercase_mapping > 0 ? uppercase_mapping : lowercase_mapping end end extend self # A list of all available normalization forms. See http://www.unicode.org/reports/tr15/tr15-29.html for more # information about normalization. NORMALIZATION_FORMS = [:c, :kc, :d, :kd] # The default normalization used for operations that require normalization. It can be set to any of the # normalizations in NORMALIZATION_FORMS. # # Example: # Mail::Multibyte::Unicode.default_normalization_form = :c attr_accessor :default_normalization_form @default_normalization_form = :kc # Hangul character boundaries and properties HANGUL_SBASE = 0xAC00 HANGUL_LBASE = 0x1100 HANGUL_VBASE = 0x1161 HANGUL_TBASE = 0x11A7 HANGUL_LCOUNT = 19 HANGUL_VCOUNT = 21 HANGUL_TCOUNT = 28 HANGUL_NCOUNT = HANGUL_VCOUNT * HANGUL_TCOUNT HANGUL_SCOUNT = 11172 HANGUL_SLAST = HANGUL_SBASE + HANGUL_SCOUNT HANGUL_JAMO_FIRST = 0x1100 HANGUL_JAMO_LAST = 0x11FF # All the unicode whitespace WHITESPACE = [ (0x0009..0x000D).to_a, # White_Space # Cc [5] .. 0x0020, # White_Space # Zs SPACE 0x0085, # White_Space # Cc 0x00A0, # White_Space # Zs NO-BREAK SPACE 0x1680, # White_Space # Zs OGHAM SPACE MARK 0x180E, # White_Space # Zs MONGOLIAN VOWEL SEPARATOR (0x2000..0x200A).to_a, # White_Space # Zs [11] EN QUAD..HAIR SPACE 0x2028, # White_Space # Zl LINE SEPARATOR 0x2029, # White_Space # Zp PARAGRAPH SEPARATOR 0x202F, # White_Space # Zs NARROW NO-BREAK SPACE 0x205F, # White_Space # Zs MEDIUM MATHEMATICAL SPACE 0x3000, # White_Space # Zs IDEOGRAPHIC SPACE ].flatten.freeze # BOM (byte order mark) can also be seen as whitespace, it's a non-rendering character used to distinguish # between little and big endian. This is not an issue in utf-8, so it must be ignored. LEADERS_AND_TRAILERS = WHITESPACE + [65279] # ZERO-WIDTH NO-BREAK SPACE aka BOM # Returns a regular expression pattern that matches the passed Unicode codepoints def self.codepoints_to_pattern(array_of_codepoints) #:nodoc: array_of_codepoints.collect{ |e| [e].pack 'U*' }.join('|') end TRAILERS_PAT = /(#{codepoints_to_pattern(LEADERS_AND_TRAILERS)})+\Z/u LEADERS_PAT = /\A(#{codepoints_to_pattern(LEADERS_AND_TRAILERS)})+/u # Unpack the string at codepoints boundaries. Raises an EncodingError when the encoding of the string isn't # valid UTF-8. # # Example: # Unicode.u_unpack('Café') # => [67, 97, 102, 233] def u_unpack(string) begin string.unpack 'U*' rescue ArgumentError raise EncodingError, 'malformed UTF-8 character' end end # Detect whether the codepoint is in a certain character class. Returns +true+ when it's in the specified # character class and +false+ otherwise. Valid character classes are: :cr, :lf, :l, # :v, :lv, :lvt and :t. # # Primarily used by the grapheme cluster support. def in_char_class?(codepoint, classes) classes.detect { |c| database.boundary[c] === codepoint } ? true : false end # Unpack the string at grapheme boundaries. Returns a list of character lists. # # Example: # Unicode.g_unpack('क्षि') # => [[2325, 2381], [2359], [2367]] # Unicode.g_unpack('Café') # => [[67], [97], [102], [233]] def g_unpack(string) codepoints = u_unpack(string) unpacked = [] pos = 0 marker = 0 eoc = codepoints.length while(pos < eoc) pos += 1 previous = codepoints[pos-1] current = codepoints[pos] if ( # CR X LF ( previous == database.boundary[:cr] and current == database.boundary[:lf] ) or # L X (L|V|LV|LVT) ( database.boundary[:l] === previous and in_char_class?(current, [:l,:v,:lv,:lvt]) ) or # (LV|V) X (V|T) ( in_char_class?(previous, [:lv,:v]) and in_char_class?(current, [:v,:t]) ) or # (LVT|T) X (T) ( in_char_class?(previous, [:lvt,:t]) and database.boundary[:t] === current ) or # X Extend (database.boundary[:extend] === current) ) else unpacked << codepoints[marker..pos-1] marker = pos end end unpacked end # Reverse operation of g_unpack. # # Example: # Unicode.g_pack(Unicode.g_unpack('क्षि')) # => 'क्षि' def g_pack(unpacked) (unpacked.flatten).pack('U*') end # Re-order codepoints so the string becomes canonical. def reorder_characters(codepoints) length = codepoints.length- 1 pos = 0 while pos < length do cp1, cp2 = database.codepoints[codepoints[pos]], database.codepoints[codepoints[pos+1]] if (cp1.combining_class > cp2.combining_class) && (cp2.combining_class > 0) codepoints[pos..pos+1] = cp2.code, cp1.code pos += (pos > 0 ? -1 : 1) else pos += 1 end end codepoints end # Decompose composed characters to the decomposed form. def decompose_codepoints(type, codepoints) codepoints.inject([]) do |decomposed, cp| # if it's a hangul syllable starter character if HANGUL_SBASE <= cp and cp < HANGUL_SLAST sindex = cp - HANGUL_SBASE ncp = [] # new codepoints ncp << HANGUL_LBASE + sindex / HANGUL_NCOUNT ncp << HANGUL_VBASE + (sindex % HANGUL_NCOUNT) / HANGUL_TCOUNT tindex = sindex % HANGUL_TCOUNT ncp << (HANGUL_TBASE + tindex) unless tindex == 0 decomposed.concat ncp # if the codepoint is decomposable in with the current decomposition type elsif (ncp = database.codepoints[cp].decomp_mapping) and (!database.codepoints[cp].decomp_type || type == :compatability) decomposed.concat decompose_codepoints(type, ncp.dup) else decomposed << cp end end end # Compose decomposed characters to the composed form. def compose_codepoints(codepoints) pos = 0 eoa = codepoints.length - 1 starter_pos = 0 starter_char = codepoints[0] previous_combining_class = -1 while pos < eoa pos += 1 lindex = starter_char - HANGUL_LBASE # -- Hangul if 0 <= lindex and lindex < HANGUL_LCOUNT vindex = codepoints[starter_pos+1] - HANGUL_VBASE rescue vindex = -1 if 0 <= vindex and vindex < HANGUL_VCOUNT tindex = codepoints[starter_pos+2] - HANGUL_TBASE rescue tindex = -1 if 0 <= tindex and tindex < HANGUL_TCOUNT j = starter_pos + 2 eoa -= 2 else tindex = 0 j = starter_pos + 1 eoa -= 1 end codepoints[starter_pos..j] = (lindex * HANGUL_VCOUNT + vindex) * HANGUL_TCOUNT + tindex + HANGUL_SBASE end starter_pos += 1 starter_char = codepoints[starter_pos] # -- Other characters else current_char = codepoints[pos] current = database.codepoints[current_char] if current.combining_class > previous_combining_class if ref = database.composition_map[starter_char] composition = ref[current_char] else composition = nil end unless composition.nil? codepoints[starter_pos] = composition starter_char = composition codepoints.delete_at pos eoa -= 1 pos -= 1 previous_combining_class = -1 else previous_combining_class = current.combining_class end else previous_combining_class = current.combining_class end if current.combining_class == 0 starter_pos = pos starter_char = codepoints[pos] end end end codepoints end # Replaces all ISO-8859-1 or CP1252 characters by their UTF-8 equivalent resulting in a valid UTF-8 string. # # Passing +true+ will forcibly tidy all bytes, assuming that the string's encoding is entirely CP1252 or ISO-8859-1. def tidy_bytes(string, force = false) if force return string.unpack("C*").map do |b| tidy_byte(b) end.flatten.compact.pack("C*").unpack("U*").pack("U*") end bytes = string.unpack("C*") conts_expected = 0 last_lead = 0 bytes.each_index do |i| byte = bytes[i] is_cont = byte > 127 && byte < 192 is_lead = byte > 191 && byte < 245 is_unused = byte > 240 is_restricted = byte > 244 # Impossible or highly unlikely byte? Clean it. if is_unused || is_restricted bytes[i] = tidy_byte(byte) elsif is_cont # Not expecting contination byte? Clean up. Otherwise, now expect one less. conts_expected == 0 ? bytes[i] = tidy_byte(byte) : conts_expected -= 1 else if conts_expected > 0 # Expected continuation, but got ASCII or leading? Clean backwards up to # the leading byte. (1..(i - last_lead)).each {|j| bytes[i - j] = tidy_byte(bytes[i - j])} conts_expected = 0 end if is_lead # Final byte is leading? Clean it. if i == bytes.length - 1 bytes[i] = tidy_byte(bytes.last) else # Valid leading byte? Expect continuations determined by position of # first zero bit, with max of 3. conts_expected = byte < 224 ? 1 : byte < 240 ? 2 : 3 last_lead = i end end end end bytes.empty? ? "" : bytes.flatten.compact.pack("C*").unpack("U*").pack("U*") end # Returns the KC normalization of the string by default. NFKC is considered the best normalization form for # passing strings to databases and validations. # # * string - The string to perform normalization on. # * form - The form you want to normalize in. Should be one of the following: # :c, :kc, :d, or :kd. Default is # Mail::Multibyte.default_normalization_form def normalize(string, form=nil) form ||= @default_normalization_form # See http://www.unicode.org/reports/tr15, Table 1 codepoints = u_unpack(string) case form when :d reorder_characters(decompose_codepoints(:canonical, codepoints)) when :c compose_codepoints(reorder_characters(decompose_codepoints(:canonical, codepoints))) when :kd reorder_characters(decompose_codepoints(:compatability, codepoints)) when :kc compose_codepoints(reorder_characters(decompose_codepoints(:compatability, codepoints))) else raise ArgumentError, "#{form} is not a valid normalization variant", caller end.pack('U*') end def apply_mapping(string, mapping) #:nodoc: u_unpack(string).map do |codepoint| cp = database.codepoints[codepoint] if cp and (ncp = cp.send(mapping)) and ncp > 0 ncp else codepoint end end.pack('U*') end # Holds static data from the Unicode database class UnicodeDatabase ATTRIBUTES = :codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252 attr_writer(*ATTRIBUTES) def initialize @codepoints = Hash.new(Codepoint.new) @composition_exclusion = [] @composition_map = {} @boundary = {} @cp1252 = {} end # Lazy load the Unicode database so it's only loaded when it's actually used ATTRIBUTES.each do |attr_name| class_eval(<<-EOS, __FILE__, __LINE__ + 1) def #{attr_name} # def codepoints load # load @#{attr_name} # @codepoints end # end EOS end # Loads the Unicode database and returns all the internal objects of UnicodeDatabase. def load begin @codepoints, @composition_exclusion, @composition_map, @boundary, @cp1252 = File.open(self.class.filename, 'rb') { |f| Marshal.load f.read } rescue => e raise IOError.new("Couldn't load the Unicode tables for UTF8Handler (#{e.message}), Mail::Multibyte is unusable") end # Redefine the === method so we can write shorter rules for grapheme cluster breaks @boundary.each do |k,_| @boundary[k].instance_eval do def ===(other) detect { |i| i === other } ? true : false end end if @boundary[k].kind_of?(Array) end # define attr_reader methods for the instance variables class << self attr_reader(*ATTRIBUTES) end end # Returns the directory in which the data files are stored def self.dirname File.dirname(__FILE__) + '/../values/' end # Returns the filename for the data file for this version def self.filename File.expand_path File.join(dirname, "unicode_tables.dat") end end private def tidy_byte(byte) if byte < 160 [database.cp1252[byte] || byte].pack("U").unpack("C*") elsif byte < 192 [194, byte] else [195, byte - 64] end end def database @database ||= UnicodeDatabase.new end end end end mail-2.8.1/lib/mail/multibyte/utils.rb000066400000000000000000000021701436372131700176460ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail #:nodoc: module Multibyte #:nodoc: # Returns a regular expression that matches valid characters in the current encoding def self.valid_character VALID_CHARACTER[Encoding.default_external.to_s] end # Returns true if string has valid utf-8 encoding def self.is_utf8?(string) case string.encoding when Encoding::UTF_8 verify(string) when Encoding::ASCII_8BIT, Encoding::US_ASCII verify(to_utf8(string)) else false end end # Verifies the encoding of a string def self.verify(string) string.valid_encoding? end # Verifies the encoding of the string and raises an exception when it's not valid def self.verify!(string) raise EncodingError.new("Found characters with invalid encoding") unless verify(string) end # Removes all invalid characters from the string. # # Note: this method is a no-op in Ruby 1.9 def self.clean(string) string end def self.to_utf8(string) string.dup.force_encoding(Encoding::UTF_8) end end end mail-2.8.1/lib/mail/network.rb000066400000000000000000000015041436372131700161610ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/network/retriever_methods/base' module Mail register_autoload :SMTP, 'mail/network/delivery_methods/smtp' register_autoload :FileDelivery, 'mail/network/delivery_methods/file_delivery' register_autoload :LoggerDelivery, 'mail/network/delivery_methods/logger_delivery' register_autoload :Sendmail, 'mail/network/delivery_methods/sendmail' register_autoload :Exim, 'mail/network/delivery_methods/exim' register_autoload :SMTPConnection, 'mail/network/delivery_methods/smtp_connection' register_autoload :TestMailer, 'mail/network/delivery_methods/test_mailer' register_autoload :POP3, 'mail/network/retriever_methods/pop3' register_autoload :IMAP, 'mail/network/retriever_methods/imap' register_autoload :TestRetriever, 'mail/network/retriever_methods/test_retriever' end mail-2.8.1/lib/mail/network/000077500000000000000000000000001436372131700156345ustar00rootroot00000000000000mail-2.8.1/lib/mail/network/delivery_methods/000077500000000000000000000000001436372131700212025ustar00rootroot00000000000000mail-2.8.1/lib/mail/network/delivery_methods/exim.rb000066400000000000000000000023141436372131700224710ustar00rootroot00000000000000# frozen_string_literal: true module Mail # A delivery method implementation which sends via exim. # # To use this, first find out where the exim binary is on your computer, # if you are on a mac or unix box, it is usually in /usr/sbin/exim, this will # be your exim location. # # Mail.defaults do # delivery_method :exim # end # # Or if your exim binary is not at '/usr/sbin/exim' # # Mail.defaults do # delivery_method :exim, :location => '/absolute/path/to/your/exim' # end # # Then just deliver the email as normal: # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing exim' # body 'testing exim' # end # # Or by calling deliver on a Mail message # # mail = Mail.new do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing exim' # body 'testing exim' # end # # mail.deliver! class Exim < Sendmail DEFAULTS = { :location => '/usr/sbin/exim', :arguments => %w[ -i -t ] } # Uses -t option to extract recipients from the message. def destinations_for(envelope) nil end end end mail-2.8.1/lib/mail/network/delivery_methods/file_delivery.rb000066400000000000000000000024121436372131700243500ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/smtp_envelope' module Mail # FileDelivery class delivers emails into multiple files based on the destination # address. Each file is appended to if it already exists. # # So if you have an email going to fred@test, bob@test, joe@anothertest, and you # set your location path to /path/to/mails then FileDelivery will create the directory # if it does not exist, and put one copy of the email in three files, called # by their message id # # Make sure the path you specify with :location is writable by the Ruby process # running Mail. class FileDelivery require 'fileutils' attr_accessor :settings def initialize(values) self.settings = { :location => './mails', :extension => '' }.merge!(values) end def deliver!(mail) envelope = Mail::SmtpEnvelope.new(mail) if ::File.respond_to?(:makedirs) ::File.makedirs settings[:location] else ::FileUtils.mkdir_p settings[:location] end envelope.to.uniq.each do |to| path = ::File.join(settings[:location], File.basename(to.to_s+settings[:extension])) ::File.open(path, 'a') do |f| f.write envelope.message f.write "\r\n\r\n" end end end end end mail-2.8.1/lib/mail/network/delivery_methods/logger_delivery.rb000066400000000000000000000013301436372131700247060ustar00rootroot00000000000000require 'mail/smtp_envelope' module Mail class LoggerDelivery attr_reader :logger, :severity, :settings def initialize(settings) @settings = settings @logger = settings.fetch(:logger) { default_logger } @severity = derive_severity(settings[:severity]) end def deliver!(mail) logger.log(severity) { Mail::SmtpEnvelope.new(mail).message } end private def default_logger require 'logger' ::Logger.new($stdout) end def derive_severity(severity) case severity when nil Logger::INFO when Integer severity else Logger.const_get(severity.to_s.upcase) end end end end mail-2.8.1/lib/mail/network/delivery_methods/sendmail.rb000066400000000000000000000076041436372131700233320ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/smtp_envelope' module Mail # A delivery method implementation which sends via sendmail. # # To use this, first find out where the sendmail binary is on your computer, # if you are on a mac or unix box, it is usually in /usr/sbin/sendmail, this will # be your sendmail location. # # Mail.defaults do # delivery_method :sendmail # end # # Or if your sendmail binary is not at '/usr/sbin/sendmail' # # Mail.defaults do # delivery_method :sendmail, :location => '/absolute/path/to/your/sendmail' # end # # Then just deliver the email as normal: # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # Or by calling deliver on a Mail message # # mail = Mail.new do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # mail.deliver! class Sendmail DEFAULTS = { :location => '/usr/sbin/sendmail', :arguments => %w[ -i ] } attr_accessor :settings class DeliveryError < StandardError end def initialize(values) if values[:arguments].is_a?(String) deprecation_warn.call \ 'Initializing Mail::Sendmail with :arguments of type String is deprecated.' \ ' Instead ensure :arguments is an array of strings, e.g. ["-i", "-t"]' end self.settings = self.class::DEFAULTS.merge(values) end def destinations_for(envelope) envelope.to end def deliver!(mail) envelope = Mail::SmtpEnvelope.new(mail) arguments = settings[:arguments] if arguments.is_a? String return old_deliver(envelope) end command = [settings[:location]] command.concat Array(arguments) command.concat [ '-f', envelope.from ] if envelope.from if destinations = destinations_for(envelope) command.push '--' command.concat destinations end popen(command) do |io| io.puts ::Mail::Utilities.binary_unsafe_to_lf(envelope.message) io.flush end end private def popen(command, &block) IO.popen(command, 'w+', :err => :out, &block).tap do if $?.exitstatus != 0 raise DeliveryError, "Delivery failed with exitstatus #{$?.exitstatus}: #{command.inspect}" end end end #+ support for delivery using string arguments (deprecated) def old_deliver(envelope) smtp_from = envelope.from smtp_to = destinations_for(envelope) from = "-f #{shellquote(smtp_from)}" if smtp_from destination = smtp_to.map { |to| shellquote(to) }.join(' ') arguments = "#{settings[:arguments]} #{from} --" command = "#{settings[:location]} #{arguments} #{destination}" popen command do |io| io.puts ::Mail::Utilities.binary_unsafe_to_lf(envelope.message) io.flush end end # The following is an adaptation of ruby 1.9.2's shellwords.rb file, # with the following modifications: # # - Wraps in double quotes # - Allows '+' to accept email addresses with them # - Allows '~' as it is not unescaped in double quotes def shellquote(address) # Process as a single byte sequence because not all shell # implementations are multibyte aware. # # A LF cannot be escaped with a backslash because a backslash + LF # combo is regarded as line continuation and simply ignored. Strip it. escaped = address.gsub(/([^A-Za-z0-9_\s\+\-.,:\/@~])/n, "\\\\\\1").gsub("\n", '') %("#{escaped}") end #- support for delivery using string arguments def deprecation_warn defined?(ActiveSupport::Deprecation.warn) ? ActiveSupport::Deprecation.method(:warn) : Kernel.method(:warn) end end end mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb000066400000000000000000000137771436372131700225310ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/smtp_envelope' module Mail # == Sending Email with SMTP # # Mail allows you to send emails using SMTP. This is done by wrapping Net::SMTP in # an easy to use manner. # # === Sending via SMTP server on Localhost # # Sending locally (to a postfix or sendmail server running on localhost) requires # no special setup. Just to Mail.deliver &block or message.deliver! and it will # be sent in this method. # # === Sending via MobileMe # # Mail.defaults do # delivery_method :smtp, { :address => "smtp.me.com", # :port => 587, # :domain => 'your.host.name', # :user_name => '', # :password => '', # :authentication => 'plain', # :enable_starttls_auto => true } # end # # === Sending via GMail # # Mail.defaults do # delivery_method :smtp, { :address => "smtp.gmail.com", # :port => 587, # :domain => 'your.host.name', # :user_name => '', # :password => '', # :authentication => 'plain', # :enable_starttls_auto => true } # end # # === Certificate verification # # When using TLS, some mail servers provide certificates that are self-signed # or whose names do not exactly match the hostname given in the address. # OpenSSL will reject these by default. The best remedy is to use the correct # hostname or update the certificate authorities trusted by your ruby. If # that isn't possible, you can control this behavior with # an :openssl_verify_mode setting. Its value may be either an OpenSSL # verify mode constant (OpenSSL::SSL::VERIFY_NONE, OpenSSL::SSL::VERIFY_PEER), # or a string containing the name of an OpenSSL verify mode (none, peer). # # === Others # # Feel free to send me other examples that were tricky # # === Delivering the email # # Once you have the settings right, sending the email is done by: # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # Or by calling deliver on a Mail message # # mail = Mail.new do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # mail.deliver! class SMTP attr_accessor :settings DEFAULTS = { :address => 'localhost', :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls => nil, :enable_starttls_auto => true, :openssl_verify_mode => nil, :ssl => nil, :tls => nil, :open_timeout => 5, :read_timeout => 5 } def initialize(values) self.settings = DEFAULTS.merge(values) end def deliver!(mail) response = start_smtp_session do |smtp| Mail::SMTPConnection.new(:connection => smtp, :return_response => true).deliver!(mail) end settings[:return_response] ? response : self end private def start_smtp_session(&block) build_smtp_session.start(settings[:domain], settings[:user_name], settings[:password], settings[:authentication], &block) end def build_smtp_session Net::SMTP.new(settings[:address], settings[:port]).tap do |smtp| tls = settings[:tls] || settings[:ssl] if !tls.nil? case tls when true smtp.enable_tls(ssl_context) when false smtp.disable_tls else raise ArgumentError, "Unrecognized :tls value #{settings[:tls].inspect}; expected true, false, or nil" end elsif settings.include?(:enable_starttls) && !settings[:enable_starttls].nil? case settings[:enable_starttls] when true smtp.enable_starttls(ssl_context) when false smtp.disable_starttls else raise ArgumentError, "Unrecognized :enable_starttls value #{settings[:enable_starttls].inspect}; expected true, false, or nil" end elsif settings.include?(:enable_starttls_auto) && !settings[:enable_starttls_auto].nil? case settings[:enable_starttls_auto] when true smtp.enable_starttls_auto(ssl_context) when false smtp.disable_starttls else raise ArgumentError, "Unrecognized :enable_starttls_auto value #{settings[:enable_starttls_auto].inspect}; expected true, false, or nil" end end smtp.open_timeout = settings[:open_timeout] if settings[:open_timeout] smtp.read_timeout = settings[:read_timeout] if settings[:read_timeout] end end # Allow SSL context to be configured via settings, for Ruby >= 1.9 # Just returns openssl verify mode for Ruby 1.8.x def ssl_context openssl_verify_mode = settings[:openssl_verify_mode] if openssl_verify_mode.kind_of?(String) openssl_verify_mode = OpenSSL::SSL.const_get("VERIFY_#{openssl_verify_mode.upcase}") end context = Net::SMTP.default_ssl_context context.verify_mode = openssl_verify_mode if openssl_verify_mode context.ca_path = settings[:ca_path] if settings[:ca_path] context.ca_file = settings[:ca_file] if settings[:ca_file] context end end end mail-2.8.1/lib/mail/network/delivery_methods/smtp_connection.rb000066400000000000000000000034361436372131700247370ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/smtp_envelope' module Mail # == Sending Email with SMTP # # Mail allows you to send emails using an open SMTP connection. This is done by # passing a created Net::SMTP object. This way we can get better performance to # our local mail server by reducing the number of connections at any one time. # # === Sending via SMTP server on Localhost # # To send mail open a connection with Net::Smtp using any options you like # === Delivering the email # # Once you have the settings right, sending the email is done by: # # smtp_conn = Net::SMTP.start(settings[:address], settings[:port]) # Mail.defaults do # delivery_method :smtp_connection, { :connection => smtp_conn } # end # # Mail.deliver do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # Or by calling deliver on a Mail message # # mail = Mail.new do # to 'mikel@test.lindsaar.net' # from 'ada@test.lindsaar.net' # subject 'testing sendmail' # body 'testing sendmail' # end # # mail.deliver! class SMTPConnection attr_accessor :smtp, :settings def initialize(values) raise ArgumentError.new('A Net::SMTP object is required for this delivery method') if values[:connection].nil? self.smtp = values[:connection] self.settings = values end # Send the message via SMTP. # The from and to attributes are optional. If not set, they are retrieve from the Message. def deliver!(mail) envelope = Mail::SmtpEnvelope.new(mail) response = smtp.sendmail(envelope.message, envelope.from, envelope.to) settings[:return_response] ? response : self end end end mail-2.8.1/lib/mail/network/delivery_methods/test_mailer.rb000066400000000000000000000022141436372131700240360ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/smtp_envelope' module Mail # The TestMailer is a bare bones mailer that does nothing. It is useful # when you are testing. # # It also provides a template of the minimum methods you require to implement # if you want to make a custom mailer for Mail class TestMailer # Provides a store of all the emails sent with the TestMailer so you can check them. def self.deliveries @@deliveries ||= [] end # Allows you to over write the default deliveries store from an array to some # other object. If you just want to clear the store, # call TestMailer.deliveries.clear. # # If you place another object here, please make sure it responds to: # # * << (message) # * clear # * length # * size # * and other common Array methods def self.deliveries=(val) @@deliveries = val end attr_accessor :settings def initialize(values) @settings = values.dup end def deliver!(mail) # Create the envelope to validate it Mail::SmtpEnvelope.new(mail) Mail::TestMailer.deliveries << mail end end end mail-2.8.1/lib/mail/network/retriever_methods/000077500000000000000000000000001436372131700213665ustar00rootroot00000000000000mail-2.8.1/lib/mail/network/retriever_methods/base.rb000066400000000000000000000040511436372131700226250ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail class Retriever # Get the oldest received email(s) # # Possible options: # count: number of emails to retrieve. The default value is 1. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # def first(options = nil, &block) options = options ? Hash[options] : {} options[:what] = :first options[:count] ||= 1 find(options, &block) end # Get the most recent received email(s) # # Possible options: # count: number of emails to retrieve. The default value is 1. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # def last(options = nil, &block) options = options ? Hash[options] : {} options[:what] = :last options[:count] ||= 1 find(options, &block) end # Get all emails. # # Possible options: # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # def all(options = nil, &block) options = options ? Hash[options] : {} options[:count] = :all find(options, &block) end # Find emails in the mailbox, and then deletes them. Without any options, the # five last received emails are returned. # # Possible options: # what: last or first emails. The default is :first. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # count: number of emails to retrieve. The default value is 10. A value of 1 returns an # instance of Message, not an array of Message instances. # delete_after_find: flag for whether to delete each retreived email after find. Default # is true. Call #find if you would like this to default to false. # def find_and_delete(options = nil, &block) options = options ? Hash[options] : {} options[:delete_after_find] ||= true find(options, &block) end end end mail-2.8.1/lib/mail/network/retriever_methods/imap.rb000066400000000000000000000203071436372131700226430ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # The IMAP retriever allows to get the last, first or all emails from a IMAP server. # Each email retrieved (RFC2822) is given as an instance of +Message+. # # While being retrieved, emails can be yielded if a block is given. # # === Example of retrieving Emails from GMail: # # Mail.defaults do # retriever_method :imap, { :address => "imap.googlemail.com", # :port => 993, # :user_name => '', # :password => '', # :enable_ssl => true } # end # # Mail.all #=> Returns an array of all emails # Mail.first #=> Returns the first unread email # Mail.last #=> Returns the last unread email # # You can also pass options into Mail.find to locate an email in your imap mailbox # with the following options: # # mailbox: name of the mailbox used for email retrieval. The default is 'INBOX'. # what: last or first emails. The default is :first. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # count: number of emails to retrieve. The default value is 10. A value of 1 returns an # instance of Message, not an array of Message instances. # keys: are passed as criteria to the SEARCH command. They can either be a string holding the entire search string, # or a single-dimension array of search keywords and arguments. Refer to [IMAP] section 6.4.4 for a full list # The default is 'ALL' # # Mail.find(:what => :first, :count => 10, :order => :asc, :keys=>'ALL') # #=> Returns the first 10 emails in ascending order # class IMAP < Retriever require 'net/imap' unless defined?(Net::IMAP) def initialize(values) self.settings = { :address => "localhost", :port => 143, :user_name => nil, :password => nil, :authentication => nil, :enable_ssl => false, :enable_starttls => false }.merge!(values) end attr_accessor :settings # Find emails in a IMAP mailbox. Without any options, the 10 last received emails are returned. # # Possible options: # mailbox: mailbox to search the email(s) in. The default is 'INBOX'. # what: last or first emails. The default is :first. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # count: number of emails to retrieve. The default value is 10. A value of 1 returns an # instance of Message, not an array of Message instances. # read_only: will ensure that no writes are made to the inbox during the session. Specifically, if this is # set to true, the code will use the EXAMINE command to retrieve the mail. If set to false, which # is the default, a SELECT command will be used to retrieve the mail # This is helpful when you don't want your messages to be set to read automatically. Default is false. # delete_after_find: flag for whether to delete each retreived email after find. Default # is false. Use #find_and_delete if you would like this to default to true. # keys: are passed as criteria to the SEARCH command. They can either be a string holding the entire search string, # or a single-dimension array of search keywords and arguments. Refer to [IMAP] section 6.4.4 for a full list # The default is 'ALL' # search_charset: charset to pass to IMAP server search. Omitted by default. Example: 'UTF-8' or 'ASCII'. # def find(options=nil, &block) options = validate_options(options) start do |imap| options[:read_only] ? imap.examine(options[:mailbox]) : imap.select(options[:mailbox]) uids = imap.uid_search(options[:keys], options[:search_charset]) uids.reverse! if options[:what].to_sym == :last uids = uids.first(options[:count]) if options[:count].is_a?(Integer) uids.reverse! if (options[:what].to_sym == :last && options[:order].to_sym == :asc) || (options[:what].to_sym != :last && options[:order].to_sym == :desc) if block_given? uids.each do |uid| uid = options[:uid].to_i unless options[:uid].nil? fetchdata = imap.uid_fetch(uid, ['RFC822', 'FLAGS'])[0] new_message = Mail.new(fetchdata.attr['RFC822']) new_message.mark_for_delete = true if options[:delete_after_find] if block.arity == 4 yield new_message, imap, uid, fetchdata.attr['FLAGS'] elsif block.arity == 3 yield new_message, imap, uid else yield new_message end imap.uid_store(uid, "+FLAGS", [Net::IMAP::DELETED]) if options[:delete_after_find] && new_message.is_marked_for_delete? break unless options[:uid].nil? end imap.expunge if options[:delete_after_find] else emails = [] uids.each do |uid| uid = options[:uid].to_i unless options[:uid].nil? fetchdata = imap.uid_fetch(uid, ['RFC822'])[0] emails << Mail.new(fetchdata.attr['RFC822']) imap.uid_store(uid, "+FLAGS", [Net::IMAP::DELETED]) if options[:delete_after_find] break unless options[:uid].nil? end imap.expunge if options[:delete_after_find] emails.size == 1 && options[:count] == 1 ? emails.first : emails end end end # Delete all emails from a IMAP mailbox def delete_all(mailbox='INBOX') mailbox ||= 'INBOX' mailbox = Net::IMAP.encode_utf7(mailbox) start do |imap| imap.select(mailbox) imap.uid_search(['ALL']).each do |uid| imap.uid_store(uid, "+FLAGS", [Net::IMAP::DELETED]) end imap.expunge end end # Returns the connection object of the retrievable (IMAP or POP3) def connection(&block) raise ArgumentError.new('Mail::Retrievable#connection takes a block') unless block_given? start do |imap| yield imap end end private # Set default options def validate_options(options) options = options ? Hash[options] : {} options[:mailbox] ||= 'INBOX' options[:count] ||= 10 options[:order] ||= :asc options[:what] ||= :first options[:keys] ||= 'ALL' options[:uid] ||= nil options[:delete_after_find] ||= false options[:mailbox] = Net::IMAP.encode_utf7(options[:mailbox]) options[:read_only] ||= false options end # Start an IMAP session and ensures that it will be closed in any case. def start(config=Mail::Configuration.instance, &block) raise ArgumentError.new("Mail::Retrievable#imap_start takes a block") unless block_given? if settings[:enable_starttls] && settings[:enable_ssl] raise ArgumentError, ":enable_starttls and :enable_ssl are mutually exclusive. Set :enable_ssl if you're on an IMAPS connection. Set :enable_starttls if you're on an IMAP connection and using STARTTLS for secure TLS upgrade." end imap = Net::IMAP.new(settings[:address], settings[:port], settings[:enable_ssl], nil, false) imap.starttls if settings[:enable_starttls] if settings[:authentication].nil? imap.login(settings[:user_name], settings[:password]) else # Note that Net::IMAP#authenticate('LOGIN', ...) is not equal with Net::IMAP#login(...)! # (see also http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/net/imap/rdoc/classes/Net/IMAP.html#M000718) imap.authenticate(settings[:authentication], settings[:user_name], settings[:password]) end yield imap ensure if defined?(imap) && imap && !imap.disconnected? imap.disconnect end end end end mail-2.8.1/lib/mail/network/retriever_methods/pop3.rb000066400000000000000000000125351436372131700226020ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail # The Pop3 retriever allows to get the last, first or all emails from a POP3 server. # Each email retrieved (RFC2822) is given as an instance of +Message+. # # While being retrieved, emails can be yielded if a block is given. # # === Example of retrieving Emails from GMail: # # Mail.defaults do # retriever_method :pop3, { :address => "pop.gmail.com", # :port => 995, # :user_name => '', # :password => '', # :enable_ssl => true } # end # # Mail.all #=> Returns an array of all emails # Mail.first #=> Returns the first unread email # Mail.last #=> Returns the last unread email # # You can also pass options into Mail.find to locate an email in your pop mailbox # with the following options: # # what: last or first emails. The default is :first. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # count: number of emails to retrieve. The default value is 10. A value of 1 returns an # instance of Message, not an array of Message instances. # # Mail.find(:what => :first, :count => 10, :order => :asc) # #=> Returns the first 10 emails in ascending order # class POP3 < Retriever require 'net/pop' unless defined?(Net::POP) def initialize(values) self.settings = { :address => "localhost", :port => 110, :user_name => nil, :password => nil, :authentication => nil, :enable_ssl => false, :read_timeout => nil }.merge!(values) end attr_accessor :settings # Find emails in a POP3 mailbox. Without any options, the 5 last received emails are returned. # # Possible options: # what: last or first emails. The default is :first. # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc. # count: number of emails to retrieve. The default value is 10. A value of 1 returns an # instance of Message, not an array of Message instances. # delete_after_find: flag for whether to delete each retreived email after find. Default # is false. Use #find_and_delete if you would like this to default to true. # def find(options = nil, &block) options = validate_options(options) start do |pop3| mails = pop3.mails pop3.reset # Clears all "deleted" marks. This prevents non-explicit/accidental deletions due to server settings. mails.sort! { |m1, m2| m2.number <=> m1.number } if options[:what] == :last mails = mails.first(options[:count]) if options[:count].is_a? Integer if options[:what].to_sym == :last && options[:order].to_sym == :desc || options[:what].to_sym == :first && options[:order].to_sym == :asc || mails.reverse! end if block_given? mails.each do |mail| new_message = Mail.new(mail.pop) new_message.mark_for_delete = true if options[:delete_after_find] yield new_message mail.delete if options[:delete_after_find] && new_message.is_marked_for_delete? # Delete if still marked for delete end else emails = [] mails.each do |mail| emails << Mail.new(mail.pop) mail.delete if options[:delete_after_find] end emails.size == 1 && options[:count] == 1 ? emails.first : emails end end end # Delete all emails from a POP3 server def delete_all start do |pop3| unless pop3.mails.empty? pop3.delete_all pop3.finish end end end # Returns the connection object of the retrievable (IMAP or POP3) def connection(&block) raise ArgumentError.new('Mail::Retrievable#connection takes a block') unless block_given? start do |pop3| yield pop3 end end private # Set default options def validate_options(options) options = options ? Hash[options] : {} options[:count] ||= 10 options[:order] ||= :asc options[:what] ||= :first options[:delete_after_find] ||= false options end # Start a POP3 session and ensure that it will be closed in any case. Any messages # marked for deletion via #find_and_delete or with the :delete_after_find option # will be deleted when the session is closed. def start(config = Configuration.instance, &block) raise ArgumentError.new("Mail::Retrievable#pop3_start takes a block") unless block_given? pop3 = Net::POP3.new(settings[:address], settings[:port], false) pop3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) if settings[:enable_ssl] pop3.read_timeout = settings[:read_timeout] if settings[:read_timeout] pop3.start(settings[:user_name], settings[:password]) yield pop3 ensure if defined?(pop3) && pop3 && pop3.started? pop3.finish end end end end mail-2.8.1/lib/mail/network/retriever_methods/test_retriever.rb000066400000000000000000000024141436372131700247620ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true module Mail class TestRetriever < Retriever def self.emails @@emails end def self.emails=(val) @@emails = val end def initialize(values) @@emails = [] end def find(options = nil, &block) options = options ? Hash[options] : {} options[:count] ||= :all options[:order] ||= :asc options[:what] ||= :first emails_index = (0...@@emails.size).to_a emails_index.reverse! if options[:what] == :last emails_index = case count = options[:count] when :all then emails_index when Integer then emails_index[0, count] else raise 'Invalid count option value: ' + count.inspect end if options[:what] == :last && options[:order] == :asc || options[:what] == :first && options[:order] == :desc emails_index.reverse! end emails_index.each { |idx| @@emails[idx].mark_for_delete = true } if options[:delete_after_find] emails = emails_index.map { |idx| @@emails[idx] } emails.each { |email| yield email } if block_given? @@emails.reject!(&:is_marked_for_delete?) if options[:delete_after_find] emails.size == 1 && options[:count] == 1 ? emails.first : emails end end end mail-2.8.1/lib/mail/parser_tools.rb000066400000000000000000000006761436372131700172150ustar00rootroot00000000000000module Mail # Extends each field parser with utility methods. module ParserTools #:nodoc: # Slice bytes from ASCII-8BIT data and mark as UTF-8. if 'string'.respond_to?(:force_encoding) def chars(data, from_bytes, to_bytes) data.slice(from_bytes..to_bytes).force_encoding(Encoding::UTF_8) end else def chars(data, from_bytes, to_bytes) data.slice(from_bytes..to_bytes) end end end end mail-2.8.1/lib/mail/parsers.rb000066400000000000000000000010121436372131700161410ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/parsers/address_lists_parser' require 'mail/parsers/content_disposition_parser' require 'mail/parsers/content_location_parser' require 'mail/parsers/content_transfer_encoding_parser' require 'mail/parsers/content_type_parser' require 'mail/parsers/date_time_parser' require 'mail/parsers/envelope_from_parser' require 'mail/parsers/message_ids_parser' require 'mail/parsers/mime_version_parser' require 'mail/parsers/phrase_lists_parser' require 'mail/parsers/received_parser' mail-2.8.1/lib/mail/parsers/000077500000000000000000000000001436372131700156225ustar00rootroot00000000000000mail-2.8.1/lib/mail/parsers/address_lists_parser.rb000066400000000000000000056431261436372131700224070ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module AddressListsParser extend Mail::ParserTools AddressListStruct = Struct.new(:addresses, :group_names, :error) AddressStruct = Struct.new(:raw, :domain, :comments, :local, :obs_domain_list, :display_name, :group, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 59, 10, 10, 9, 32, 9, 59, 9, 244, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 59, 10, 10, 9, 32, 9, 59, 9, 244, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 33, 244, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 59, 10, 10, 9, 32, 9, 59, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 59, 10, 10, 9, 32, 9, 59, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 33, 244, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 33, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 33, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 9, 59, 9, 59, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 59, 9, 59, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 59, 9, 59, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 59, 9, 59, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 64, 9, 64, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 64, 9, 64, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 236, 1, 24, 1, 24, 236, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 1, 24, 236, 56, 1, 24, 56, 1, 24, 1, 24, 1, 24, 236, 236, 1, 24, 1, 24, 236, 236, 1, 24, 236, 236, 1, 24, 236, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 1, 24, 236, 56, 1, 24, 56, 51, 1, 24, 51, 236, 236, 1, 24, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 1, 24, 236, 236, 1, 24, 236, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 1, 24, 236, 56, 1, 24, 56, 51, 1, 24, 51, 236, 236, 1, 24, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 212, 236, 51, 1, 24, 51, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 51, 1, 24, 51, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 1, 24, 236, 236, 212, 236, 56, 1, 24, 56, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 54, 1, 24, 54, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 50, 1, 24, 50, 56, 1, 24, 56, 236, 236, 1, 24, 236, 212, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 50, 1, 24, 50, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 212, 236, 51, 1, 24, 51, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 51, 1, 24, 51, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 1, 24, 236, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 1, 24, 236, 56, 1, 24, 56, 51, 1, 24, 51, 1, 24, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 54, 1, 24, 54, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 50, 1, 24, 50, 56, 1, 24, 56, 236, 236, 1, 24, 236, 212, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 50, 1, 24, 50, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 212, 236, 51, 1, 24, 51, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 51, 1, 24, 51, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 236, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 1, 24, 236, 236, 212, 236, 56, 1, 24, 56, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 212, 236, 56, 1, 24, 56, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 54, 1, 24, 54, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 50, 1, 24, 50, 56, 1, 24, 56, 236, 236, 1, 24, 236, 212, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 50, 1, 24, 50, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 236, 236, 1, 24, 1, 24, 236, 236, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 212, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 1, 24, 1, 24, 236, 236, 1, 24, 1, 24, 236, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 1, 24, 236, 236, 1, 24, 212, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 54, 1, 24, 54, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 50, 1, 24, 50, 56, 1, 24, 56, 236, 236, 1, 24, 236, 212, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 50, 1, 24, 50, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 1, 24, 236, 236, 1, 24, 236, 212, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 1, 24, 1, 24, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 1, 24, 236, 236, 1, 24, 212, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 51, 51, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 51, 51, 236, 236, 236, 236, 236, 236, 236, 236, 51, 51, 236, 236, 236, 236, 236, 236, 236, 51, 51, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 56, 56, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 56, 56, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 237, 239, 264, 266, 291, 528, 530, 555, 800, 1045, 1047, 1072, 1318, 1383, 1416, 1481, 1514, 1563, 1628, 1645, 1882, 2119, 2356, 2358, 2383, 2620, 2857, 3094, 3096, 3121, 3358, 3415, 3417, 3442, 3499, 3736, 3738, 3763, 4000, 4057, 4059, 4084, 4141, 4143, 4168, 4170, 4195, 4197, 4222, 4459, 4696, 4698, 4723, 4725, 4750, 4987, 5224, 5226, 5251, 5488, 5725, 5727, 5752, 5989, 5991, 6016, 6261, 6506, 6508, 6533, 6779, 6844, 6877, 6942, 6975, 7024, 7089, 7106, 7343, 7580, 7817, 7819, 7844, 8081, 8318, 8555, 8557, 8582, 8819, 8876, 8878, 8903, 8960, 9197, 9199, 9224, 9461, 9518, 9520, 9545, 9602, 9654, 9656, 9681, 9733, 9970, 10207, 10209, 10234, 10479, 10724, 10726, 10751, 10988, 11225, 11227, 11252, 11489, 11726, 11963, 11965, 11990, 12227, 12464, 12466, 12491, 12728, 12730, 12755, 12992, 13229, 13231, 13256, 13493, 13495, 13520, 13765, 14010, 14012, 14037, 14283, 14348, 14381, 14446, 14479, 14528, 14593, 14610, 14847, 15084, 15321, 15323, 15348, 15585, 15822, 16059, 16061, 16086, 16323, 16380, 16382, 16407, 16464, 16701, 16703, 16728, 16965, 17022, 17024, 17049, 17106, 17158, 17160, 17185, 17237, 17474, 17711, 17713, 17738, 17983, 18228, 18230, 18255, 18492, 18729, 18731, 18756, 18993, 19230, 19467, 19469, 19494, 19731, 19968, 19970, 19995, 20232, 20469, 20706, 20708, 20733, 20970, 21207, 21209, 21234, 21471, 21708, 21945, 21947, 21972, 22209, 22274, 22307, 22372, 22405, 22454, 22519, 22536, 22773, 22838, 22871, 22936, 22969, 23018, 23083, 23100, 23345, 23590, 23592, 23617, 23854, 24091, 24093, 24118, 24355, 24592, 24657, 24690, 24755, 24788, 24837, 24902, 24919, 25165, 25230, 25263, 25328, 25361, 25410, 25475, 25492, 25737, 25739, 25764, 26001, 26066, 26099, 26164, 26197, 26246, 26311, 26328, 26565, 26778, 27015, 27067, 27069, 27094, 27146, 27391, 27636, 27638, 27663, 27909, 27974, 28007, 28072, 28105, 28154, 28219, 28236, 28238, 28263, 28328, 28361, 28426, 28459, 28508, 28573, 28590, 28835, 28837, 28862, 29108, 29173, 29206, 29271, 29304, 29353, 29418, 29435, 29500, 29533, 29598, 29631, 29680, 29745, 29762, 30007, 30252, 30254, 30279, 30525, 30590, 30623, 30688, 30721, 30770, 30835, 30852, 31089, 31326, 31563, 31565, 31590, 31827, 32072, 32317, 32319, 32344, 32590, 32655, 32688, 32753, 32786, 32835, 32900, 32917, 33162, 33164, 33189, 33426, 33663, 33665, 33690, 33927, 34164, 34401, 34403, 34428, 34665, 34717, 34719, 34744, 34796, 35033, 35035, 35060, 35297, 35362, 35395, 35460, 35493, 35542, 35607, 35624, 35861, 36098, 36163, 36196, 36261, 36294, 36343, 36408, 36425, 36662, 36727, 36760, 36825, 36858, 36907, 36972, 36989, 37226, 37463, 37465, 37490, 37727, 37972, 38217, 38219, 38244, 38481, 38718, 38964, 39029, 39062, 39127, 39160, 39209, 39274, 39291, 39536, 39538, 39563, 39628, 39661, 39726, 39759, 39808, 39873, 39890, 40136, 40201, 40234, 40299, 40332, 40381, 40446, 40463, 40708, 40710, 40735, 40972, 40974, 40999, 41236, 41473, 41686, 41923, 41980, 41982, 42007, 42064, 42309, 42554, 42556, 42581, 42827, 42892, 42925, 42990, 43023, 43072, 43137, 43154, 43156, 43181, 43246, 43279, 43344, 43377, 43426, 43491, 43508, 43745, 43982, 44219, 44221, 44246, 44483, 44538, 44540, 44565, 44620, 44857, 44859, 44884, 45121, 45186, 45219, 45284, 45317, 45366, 45431, 45448, 45685, 45930, 46175, 46177, 46202, 46439, 46494, 46496, 46521, 46576, 46789, 46854, 46887, 46952, 46985, 47034, 47099, 47116, 47362, 47427, 47460, 47525, 47558, 47607, 47672, 47689, 47691, 47716, 47953, 48018, 48051, 48116, 48149, 48198, 48263, 48280, 48517, 48762, 48764, 48789, 49035, 49100, 49133, 49198, 49231, 49280, 49345, 49362, 49427, 49460, 49525, 49558, 49607, 49672, 49689, 49934, 50179, 50181, 50206, 50452, 50517, 50550, 50615, 50648, 50697, 50762, 50779, 51016, 51261, 51506, 51508, 51533, 51770, 51827, 51829, 51854, 51911, 51976, 52009, 52074, 52107, 52156, 52221, 52238, 52484, 52549, 52582, 52647, 52680, 52729, 52794, 52811, 52813, 52838, 53075, 53312, 53314, 53339, 53576, 53821, 54066, 54068, 54093, 54330, 54576, 54641, 54674, 54739, 54772, 54821, 54886, 54903, 55148, 55150, 55175, 55240, 55273, 55338, 55371, 55420, 55485, 55502, 55747, 55992, 55994, 56019, 56256, 56313, 56315, 56340, 56397, 56643, 56708, 56741, 56806, 56839, 56888, 56953, 56970, 57215, 57217, 57242, 57299, 57301, 57326, 57383, 57620, 57677, 57679, 57704, 57761, 57998, 58235, 58237, 58262, 58499, 58550, 58552, 58577, 58628, 58685, 58687, 58712, 58769, 59006, 59243, 59245, 59270, 59507, 59720, 59957, 59959, 59984, 60221, 60286, 60319, 60384, 60417, 60466, 60531, 60548, 60785, 61030, 61275, 61277, 61302, 61539, 61590, 61592, 61617, 61668, 61881, 61946, 61979, 62044, 62077, 62126, 62191, 62208, 62454, 62519, 62552, 62617, 62650, 62699, 62764, 62781, 62783, 62808, 63045, 63110, 63143, 63208, 63241, 63290, 63355, 63372, 63609, 63854, 63856, 63881, 64127, 64192, 64225, 64290, 64323, 64372, 64437, 64454, 64691, 64928, 64930, 64955, 65192, 65429, 65431, 65456, 65693, 65930, 66167, 66169, 66194, 66431, 66496, 66529, 66594, 66627, 66676, 66741, 66758, 66995, 67060, 67093, 67158, 67191, 67240, 67305, 67322, 67567, 67812, 67814, 67839, 68076, 68313, 68315, 68340, 68577, 68814, 68879, 68912, 68977, 69010, 69059, 69124, 69141, 69387, 69452, 69485, 69550, 69583, 69632, 69697, 69714, 69959, 69961, 69986, 70223, 70288, 70321, 70386, 70419, 70468, 70533, 70550, 70787, 71000, 71237, 71289, 71291, 71316, 71368, 71613, 71858, 71860, 71885, 72131, 72196, 72229, 72294, 72327, 72376, 72441, 72458, 72460, 72485, 72550, 72583, 72648, 72681, 72730, 72795, 72812, 73057, 73059, 73084, 73330, 73395, 73428, 73493, 73526, 73575, 73640, 73657, 73722, 73755, 73820, 73853, 73902, 73967, 73984, 74229, 74474, 74476, 74501, 74747, 74812, 74845, 74910, 74943, 74992, 75057, 75074, 75311, 75548, 75785, 75787, 75812, 76049, 76294, 76539, 76541, 76566, 76812, 76877, 76910, 76975, 77008, 77057, 77122, 77139, 77384, 77386, 77411, 77648, 77885, 77887, 77912, 78149, 78386, 78623, 78625, 78650, 78887, 78939, 78941, 78966, 79018, 79255, 79257, 79282, 79519, 79584, 79617, 79682, 79715, 79764, 79829, 79846, 80083, 80320, 80385, 80418, 80483, 80516, 80565, 80630, 80647, 80884, 80949, 80982, 81047, 81080, 81129, 81194, 81211, 81448, 81685, 81687, 81712, 81949, 82194, 82439, 82441, 82466, 82703, 82940, 83186, 83251, 83284, 83349, 83382, 83431, 83496, 83513, 83758, 83760, 83785, 83850, 83883, 83948, 83981, 84030, 84095, 84112, 84358, 84423, 84456, 84521, 84554, 84603, 84668, 84685, 84930, 84932, 84957, 85194, 85196, 85221, 85458, 85695, 85932, 86169, 86171, 86196, 86433, 86670, 86672, 86697, 86934, 86936, 86961, 87206, 87451, 87453, 87478, 87724, 87789, 87822, 87887, 87920, 87969, 88034, 88051, 88288, 88525, 88762, 88764, 88789, 89026, 89263, 89500, 89502, 89527, 89764, 89821, 89823, 89848, 89905, 90142, 90144, 90169, 90406, 90463, 90465, 90490, 90547, 90599, 90601, 90626, 90678, 90680, 90705, 90942, 91179, 91181, 91206, 91443, 91498, 91500, 91525, 91580, 91817, 91819, 91844, 92081, 92146, 92179, 92244, 92277, 92326, 92391, 92408, 92645, 92890, 93135, 93137, 93162, 93399, 93454, 93456, 93481, 93536, 93749, 93814, 93847, 93912, 93945, 93994, 94059, 94076, 94322, 94387, 94420, 94485, 94518, 94567, 94632, 94649, 94651, 94676, 94913, 94978, 95011, 95076, 95109, 95158, 95223, 95240, 95477, 95722, 95724, 95749, 95995, 96060, 96093, 96158, 96191, 96240, 96305, 96322, 96387, 96420, 96485, 96518, 96567, 96632, 96649, 96894, 97139, 97141, 97166, 97412, 97477, 97510, 97575, 97608, 97657, 97722, 97739, 97976, 98221, 98466, 98468, 98493, 98730, 98787, 98789, 98814, 98871, 98936, 98969, 99034, 99067, 99116, 99181, 99198, 99444, 99509, 99542, 99607, 99640, 99689, 99754, 99771, 99773, 99798, 100035, 100272, 100274, 100299, 100536, 100781, 101026, 101028, 101053, 101290, 101536, 101601, 101634, 101699, 101732, 101781, 101846, 101863, 102108, 102110, 102135, 102200, 102233, 102298, 102331, 102380, 102445, 102462, 102707, 102952, 102954, 102979, 103216, 103273, 103275, 103300, 103357, 103603, 103668, 103701, 103766, 103799, 103848, 103913, 103930, 104175, 104177, 104202, 104259, 104261, 104286, 104343, 104580, 104637, 104639, 104664, 104721, 104958, 105195, 105197, 105222, 105459, 105510, 105512, 105537, 105588, 105645, 105647, 105672, 105729, 105966, 106203, 106205, 106230, 106467, 106680, 106917, 106919, 106944, 107181, 107246, 107279, 107344, 107377, 107426, 107491, 107508, 107745, 107990, 108235, 108237, 108262, 108499, 108550, 108552, 108577, 108628, 108841, 108906, 108939, 109004, 109037, 109086, 109151, 109168, 109414, 109479, 109512, 109577, 109610, 109659, 109724, 109741, 109743, 109768, 110005, 110070, 110103, 110168, 110201, 110250, 110315, 110332, 110569, 110814, 110816, 110841, 111087, 111152, 111185, 111250, 111283, 111332, 111397, 111414, 111479, 111512, 111577, 111610, 111659, 111724, 111741, 111978, 112215, 112452, 112454, 112479, 112716, 112953, 112955, 112980, 113217, 113454, 113691, 113693, 113718, 113955, 114192, 114194, 114219, 114456, 114693, 114930, 114932, 114957, 115194, 115259, 115292, 115357, 115390, 115439, 115504, 115521, 115758, 116003, 116248, 116250, 116275, 116512, 116749, 116751, 116776, 117013, 117250, 117315, 117348, 117413, 117446, 117495, 117560, 117577, 117823, 117888, 117921, 117986, 118019, 118068, 118133, 118150, 118395, 118397, 118422, 118659, 118724, 118757, 118822, 118855, 118904, 118969, 118986, 119223, 119436, 119673, 119725, 119727, 119752, 119804, 120049, 120294, 120296, 120321, 120567, 120632, 120665, 120730, 120763, 120812, 120877, 120894, 120896, 120921, 120986, 121019, 121084, 121117, 121166, 121231, 121248, 121493, 121495, 121520, 121766, 121831, 121864, 121929, 121962, 122011, 122076, 122093, 122158, 122191, 122256, 122289, 122338, 122403, 122420, 122665, 122910, 122912, 122937, 123183, 123248, 123281, 123346, 123379, 123428, 123493, 123510, 123747, 123992, 124237, 124239, 124264, 124501, 124738, 124740, 124765, 125002, 125239, 125476, 125478, 125503, 125740, 125977, 126214, 126216, 126241, 126478, 126530, 126532, 126557, 126609, 126846, 126848, 126873, 127110, 127175, 127208, 127273, 127306, 127355, 127420, 127437, 127674, 127911, 127976, 128009, 128074, 128107, 128156, 128221, 128238, 128475, 128540, 128573, 128638, 128671, 128720, 128785, 128802, 129048, 129113, 129146, 129211, 129244, 129293, 129358, 129375, 129620, 129622, 129647, 129884, 130121, 130123, 130148, 130385, 130630, 130875, 130877, 130902, 131139, 131385, 131450, 131483, 131548, 131581, 131630, 131695, 131712, 131957, 131959, 131984, 132049, 132082, 132147, 132180, 132229, 132294, 132311, 132556, 132801, 132803, 132828, 133065, 133302, 133304, 133329, 133566, 133812, 133877, 133910, 133975, 134008, 134057, 134122, 134139, 134384, 134386, 134411, 134648, 134650, 134675, 134912, 135149, 135362, 135599, 135656, 135658, 135683, 135740, 135985, 136230, 136232, 136257, 136503, 136568, 136601, 136666, 136699, 136748, 136813, 136830, 136832, 136857, 136922, 136955, 137020, 137053, 137102, 137167, 137184, 137421, 137634, 137871, 137928, 137930, 137955, 138012, 138257, 138502, 138504, 138529, 138775, 138840, 138873, 138938, 138971, 139020, 139085, 139102, 139104, 139129, 139194, 139227, 139292, 139325, 139374, 139439, 139456, 139693, 139930, 140167, 140169, 140194, 140431, 140486, 140488, 140513, 140568, 140805, 140807, 140832, 141069, 141134, 141167, 141232, 141265, 141314, 141379, 141396, 141633, 141878, 142123, 142125, 142150, 142387, 142442, 142444, 142469, 142524, 142737, 142802, 142835, 142900, 142933, 142982, 143047, 143064, 143310, 143375, 143408, 143473, 143506, 143555, 143620, 143637, 143639, 143664, 143901, 143966, 143999, 144064, 144097, 144146, 144211, 144228, 144465, 144710, 144712, 144737, 144983, 145048, 145081, 145146, 145179, 145228, 145293, 145310, 145375, 145408, 145473, 145506, 145555, 145620, 145637, 145882, 146127, 146129, 146154, 146400, 146465, 146498, 146563, 146596, 146645, 146710, 146727, 146964, 147209, 147454, 147456, 147481, 147718, 147775, 147777, 147802, 147859, 147924, 147957, 148022, 148055, 148104, 148169, 148186, 148432, 148497, 148530, 148595, 148628, 148677, 148742, 148759, 148761, 148786, 149023, 149260, 149262, 149287, 149524, 149769, 150014, 150016, 150041, 150278, 150524, 150589, 150622, 150687, 150720, 150769, 150834, 150851, 151096, 151098, 151123, 151188, 151221, 151286, 151319, 151368, 151433, 151450, 151695, 151940, 151942, 151967, 152204, 152261, 152263, 152288, 152345, 152591, 152656, 152689, 152754, 152787, 152836, 152901, 152918, 153163, 153165, 153190, 153247, 153249, 153274, 153331, 153568, 153625, 153627, 153652, 153709, 153946, 154183, 154185, 154210, 154447, 154498, 154500, 154525, 154576, 154633, 154635, 154660, 154717, 154954, 155191, 155193, 155218, 155455, 155668, 155905, 155907, 155932, 156169, 156234, 156267, 156332, 156365, 156414, 156479, 156496, 156733, 156978, 157223, 157225, 157250, 157487, 157538, 157540, 157565, 157616, 157829, 157894, 157927, 157992, 158025, 158074, 158139, 158156, 158402, 158467, 158500, 158565, 158598, 158647, 158712, 158729, 158731, 158756, 158993, 159058, 159091, 159156, 159189, 159238, 159303, 159320, 159557, 159802, 159804, 159829, 160075, 160140, 160173, 160238, 160271, 160320, 160385, 160402, 160639, 160876, 161113, 161115, 161140, 161377, 161614, 161851, 161853, 161878, 161880, 161905, 162142, 162379, 162381, 162406, 162471, 162504, 162569, 162602, 162651, 162716, 162733, 162970, 163035, 163068, 163133, 163166, 163215, 163280, 163297, 163542, 163787, 163789, 163814, 163816, 163841, 164078, 164143, 164176, 164241, 164274, 164323, 164388, 164405, 164651, 164716, 164749, 164814, 164847, 164896, 164961, 164978, 165223, 165225, 165250, 165487, 165552, 165585, 165650, 165683, 165732, 165797, 165814, 166051, 166264, 166266, 166291, 166536, 166781, 166783, 166808, 167054, 167119, 167152, 167217, 167250, 167299, 167364, 167381, 167383, 167408, 167473, 167506, 167571, 167604, 167653, 167718, 167735, 167980, 167982, 168007, 168253, 168318, 168351, 168416, 168449, 168498, 168563, 168580, 168645, 168678, 168743, 168776, 168825, 168890, 168907, 169152, 169397, 169399, 169424, 169670, 169735, 169768, 169833, 169866, 169915, 169980, 169997, 170234, 170479, 170724, 170726, 170751, 170753, 170778, 170780, 170805, 171042, 171279, 171281, 171306, 171308, 171333, 171570, 171572, 171597, 171662, 171695, 171760, 171793, 171842, 171907, 171924, 172161, 172398, 172463, 172496, 172561, 172594, 172643, 172708, 172725, 172962, 173027, 173060, 173125, 173158, 173207, 173272, 173289, 173535, 173600, 173633, 173698, 173731, 173780, 173845, 173862, 174107, 174109, 174134, 174136, 174161, 174406, 174651, 174653, 174678, 174924, 174989, 175022, 175087, 175120, 175169, 175234, 175251, 175496, 175498, 175523, 175588, 175621, 175686, 175719, 175768, 175833, 175850, 176095, 176340, 176342, 176367, 176369, 176394, 176640, 176705, 176738, 176803, 176836, 176885, 176950, 176967, 177212, 177214, 177239, 177241, 177266, 177503, 177740, 177742, 177767, 177980, 177982, 178007, 178252, 178497, 178499, 178524, 178770, 178835, 178868, 178933, 178966, 179015, 179080, 179097, 179099, 179124, 179189, 179222, 179287, 179320, 179369, 179434, 179451, 179688, 179925, 180162, 180164, 180189, 180426, 180481, 180483, 180508, 180563, 180800, 180802, 180827, 181064, 181129, 181162, 181227, 181260, 181309, 181374, 181391, 181628, 181873, 182118, 182120, 182145, 182382, 182437, 182439, 182464, 182519, 182732, 182797, 182830, 182895, 182928, 182977, 183042, 183059, 183305, 183370, 183403, 183468, 183501, 183550, 183615, 183632, 183634, 183659, 183896, 183961, 183994, 184059, 184092, 184141, 184206, 184223, 184460, 184705, 184707, 184732, 184978, 185043, 185076, 185141, 185174, 185223, 185288, 185305, 185370, 185403, 185468, 185501, 185550, 185615, 185632, 185877, 186122, 186124, 186149, 186395, 186460, 186493, 186558, 186591, 186640, 186705, 186722, 186959, 187204, 187449, 187451, 187476, 187713, 187770, 187772, 187797, 187854, 187919, 187952, 188017, 188050, 188099, 188164, 188181, 188427, 188492, 188525, 188590, 188623, 188672, 188737, 188754, 188756, 188781, 189018, 189255, 189257, 189282, 189519, 189764, 190009, 190011, 190036, 190273, 190519, 190584, 190617, 190682, 190715, 190764, 190829, 190846, 191091, 191093, 191118, 191183, 191216, 191281, 191314, 191363, 191428, 191445, 191690, 191935, 191937, 191962, 192199, 192256, 192258, 192283, 192340, 192586, 192651, 192684, 192749, 192782, 192831, 192896, 192913, 193158, 193160, 193185, 193242, 193244, 193269, 193326, 193563, 193620, 193622, 193647, 193704, 193941, 194178, 194180, 194205, 194442, 194493, 194495, 194520, 194571, 194628, 194630, 194655, 194712, 194949, 195186, 195188, 195213, 195450, 195663, 195900, 195902, 195927, 196164, 196229, 196262, 196327, 196360, 196409, 196474, 196491, 196728, 196973, 197218, 197220, 197245, 197482, 197533, 197535, 197560, 197611, 197824, 197889, 197922, 197987, 198020, 198069, 198134, 198151, 198397, 198462, 198495, 198560, 198593, 198642, 198707, 198724, 198726, 198751, 198988, 199053, 199086, 199151, 199184, 199233, 199298, 199315, 199552, 199797, 199799, 199824, 200070, 200135, 200168, 200233, 200266, 200315, 200380, 200397, 200634, 200871, 200873, 200898, 200900, 200925, 201162, 201399, 201401, 201426, 201663, 201876, 202121, 202366, 202368, 202393, 202639, 202704, 202737, 202802, 202835, 202884, 202949, 202966, 202968, 202993, 203058, 203091, 203156, 203189, 203238, 203303, 203320, 203385, 203418, 203483, 203516, 203565, 203630, 203647, 203892, 204137, 204139, 204164, 204410, 204475, 204508, 204573, 204606, 204655, 204720, 204737, 204974, 205219, 205464, 205466, 205491, 205493, 205518, 205520, 205545, 205782, 206019, 206021, 206046, 206283, 206348, 206381, 206446, 206479, 206528, 206593, 206610, 206847, 206912, 206945, 207010, 207043, 207092, 207157, 207174, 207420, 207485, 207518, 207583, 207616, 207665, 207730, 207747, 207992, 207994, 208019, 208021, 208046, 208291, 208536, 208538, 208563, 208809, 208874, 208907, 208972, 209005, 209054, 209119, 209136, 209381, 209383, 209408, 209473, 209506, 209571, 209604, 209653, 209718, 209735, 209980, 210225, 210227, 210252, 210254, 210279, 210525, 210590, 210623, 210688, 210721, 210770, 210835, 210852, 211097, 211099, 211124, 211126, 211151, 211388, 211625, 211627, 211652, 211865, 211867, 211892, 212137, 212382, 212384, 212409, 212655, 212720, 212753, 212818, 212851, 212900, 212965, 212982, 212984, 213009, 213074, 213107, 213172, 213205, 213254, 213319, 213336, 213573, 213818, 214063, 214065, 214090, 214336, 214401, 214434, 214499, 214532, 214581, 214646, 214663, 214900, 215137, 215374, 215426, 215478, 215715, 215952, 216189, 216426, 216663, 216900, 217137, 217374, 217611, 217848, 217900, 217952, 218189, 218426, 218663, 218900, 219137, 219374, 219611, 219848, 219900, 219952, 220189, 220426, 220663, 220900, 221137, 221374, 221611, 221663, 221715, 221952, 222189, 222426, 222663, 222900, 223137, 223374, 223611, 223848, 224085, 224322, 224379, 224436, 224673, 224910, 225147, 225384, 225621, 225858, 226095, 226332, 226569, 226806, 227043, 227280, 227517, 227754, 227991, 228228, 228465, 228702, 228939, 229176, 229413, 229650, 229707, 229764, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 6, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 6, 8, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 13, 14, 14, 14, 15, 1, 16, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 17, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 19, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 21, 22, 21, 21, 21, 21, 21, 23, 1, 21, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 1, 26, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 34, 1, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 1, 35, 35, 36, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 37, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 38, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, 41, 43, 44, 44, 44, 45, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 46, 46, 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 48, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 49, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 52, 54, 55, 55, 55, 56, 1, 57, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 52, 54, 55, 55, 55, 56, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 58, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 60, 61, 60, 60, 60, 60, 60, 62, 1, 60, 60, 1, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 1, 65, 60, 1, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 21, 22, 21, 21, 21, 21, 21, 75, 1, 21, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 1, 26, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 76, 1, 1, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 21, 22, 21, 21, 21, 21, 21, 78, 1, 21, 21, 1, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 8, 21, 1, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 79, 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 80, 1, 1, 1, 81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 80, 60, 61, 60, 60, 60, 60, 60, 82, 1, 60, 60, 1, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 83, 60, 1, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 84, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 86, 87, 86, 86, 86, 86, 86, 88, 1, 86, 86, 89, 86, 90, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 1, 86, 91, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 94, 94, 96, 97, 97, 97, 98, 1, 99, 1, 1, 1, 100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 86, 87, 86, 86, 86, 86, 86, 101, 1, 86, 86, 102, 86, 90, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 1, 86, 103, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 94, 94, 96, 97, 97, 97, 98, 1, 104, 1, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 1, 105, 1, 1, 1, 106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 105, 107, 108, 107, 107, 107, 107, 107, 109, 1, 107, 107, 1, 107, 110, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 107, 111, 107, 112, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 115, 115, 117, 118, 118, 118, 119, 1, 120, 1, 1, 1, 121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 1, 1, 1, 1, 1, 1, 122, 1, 1, 1, 1, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 125, 1, 126, 1, 120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 127, 1, 1, 1, 128, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 132, 1, 123, 1, 1, 1, 133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 134, 135, 134, 134, 134, 134, 134, 136, 1, 134, 134, 1, 134, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 1, 134, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 139, 139, 141, 142, 142, 142, 143, 1, 144, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 1, 145, 1, 1, 1, 146, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 145, 134, 1, 134, 134, 134, 134, 134, 147, 1, 134, 134, 1, 134, 123, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 124, 134, 148, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 139, 139, 141, 142, 142, 142, 143, 1, 145, 1, 1, 1, 146, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 145, 1, 1, 1, 1, 1, 1, 1, 147, 1, 1, 1, 1, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 148, 1, 149, 1, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 145, 1, 150, 1, 1, 1, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 150, 1, 1, 1, 1, 1, 1, 1, 152, 1, 1, 1, 1, 1, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 153, 1, 154, 1, 124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 155, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 156, 1, 157, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 157, 1, 158, 1, 1, 1, 159, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 158, 160, 161, 160, 160, 160, 160, 160, 162, 1, 160, 160, 1, 160, 24, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 25, 1, 26, 160, 1, 160, 24, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 165, 165, 167, 168, 168, 168, 169, 1, 170, 1, 1, 1, 171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 170, 160, 161, 160, 160, 160, 160, 160, 172, 1, 160, 160, 1, 160, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 8, 160, 1, 160, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 165, 165, 167, 168, 168, 168, 169, 1, 173, 1, 170, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 170, 1, 174, 1, 175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 175, 1, 176, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 176, 178, 179, 178, 178, 178, 178, 178, 180, 1, 178, 178, 181, 178, 182, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 183, 184, 178, 1, 178, 185, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 1, 1, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, 188, 188, 190, 191, 191, 191, 192, 1, 193, 1, 1, 1, 194, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 193, 195, 196, 195, 195, 195, 195, 195, 197, 1, 195, 195, 181, 195, 198, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 183, 199, 195, 1, 195, 1, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 1, 1, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 202, 202, 204, 205, 205, 205, 206, 1, 207, 1, 193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 193, 1, 208, 1, 1, 1, 209, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 208, 210, 211, 210, 210, 210, 210, 210, 212, 1, 210, 210, 213, 210, 214, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 215, 216, 210, 1, 210, 217, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 220, 220, 222, 223, 223, 223, 224, 1, 225, 1, 1, 1, 226, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 225, 227, 228, 227, 227, 227, 227, 227, 229, 1, 227, 227, 230, 227, 231, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 232, 216, 227, 1, 227, 233, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 241, 1, 242, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 242, 1, 243, 1, 1, 1, 244, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 243, 227, 228, 227, 227, 227, 227, 227, 245, 1, 227, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 216, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 247, 1, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 227, 1, 248, 248, 248, 248, 248, 248, 248, 248, 248, 1, 248, 248, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 250, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 251, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 254, 254, 256, 257, 257, 257, 258, 1, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 259, 259, 260, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 261, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 262, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 267, 268, 268, 268, 269, 1, 270, 1, 259, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 259, 1, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 267, 268, 268, 268, 269, 1, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 1, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 1, 271, 1, 1, 1, 272, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 271, 273, 274, 273, 273, 273, 273, 273, 275, 1, 273, 273, 1, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 277, 273, 1, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 285, 1, 1, 1, 286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 285, 227, 228, 227, 227, 227, 227, 227, 287, 1, 227, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 216, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 288, 1, 1, 1, 289, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 288, 227, 228, 227, 227, 227, 227, 227, 290, 1, 227, 227, 1, 227, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 199, 227, 1, 227, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 291, 1, 288, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 288, 1, 292, 1, 1, 1, 293, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 292, 273, 274, 273, 273, 273, 273, 273, 294, 1, 273, 273, 1, 273, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 295, 273, 1, 273, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 296, 1, 1, 1, 297, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 296, 298, 299, 298, 298, 298, 298, 298, 300, 1, 298, 298, 301, 298, 302, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 1, 298, 303, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 306, 306, 308, 309, 309, 309, 310, 1, 311, 1, 1, 1, 312, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 298, 299, 298, 298, 298, 298, 298, 313, 1, 298, 298, 314, 298, 302, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 1, 298, 315, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 306, 306, 308, 309, 309, 309, 310, 1, 316, 1, 311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 1, 317, 1, 1, 1, 318, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 317, 319, 320, 319, 319, 319, 319, 319, 321, 1, 319, 319, 1, 319, 322, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 319, 323, 319, 324, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 329, 330, 330, 330, 331, 1, 332, 1, 1, 1, 333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 332, 1, 1, 1, 1, 1, 1, 1, 334, 1, 1, 1, 1, 1, 335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 337, 1, 338, 1, 332, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 332, 1, 339, 1, 1, 1, 340, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 339, 1, 1, 1, 1, 1, 1, 1, 341, 1, 1, 1, 1, 1, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 344, 1, 335, 1, 1, 1, 345, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 335, 346, 347, 346, 346, 346, 346, 346, 348, 1, 346, 346, 1, 346, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 1, 346, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 352, 351, 351, 353, 354, 354, 354, 355, 1, 356, 1, 335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 335, 1, 357, 1, 1, 1, 358, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 357, 346, 1, 346, 346, 346, 346, 346, 359, 1, 346, 346, 1, 346, 335, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 336, 346, 360, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 352, 351, 351, 353, 354, 354, 354, 355, 1, 357, 1, 1, 1, 358, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 357, 1, 1, 1, 1, 1, 1, 1, 359, 1, 1, 1, 1, 1, 335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 360, 1, 361, 1, 357, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 357, 1, 362, 1, 1, 1, 363, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 362, 1, 1, 1, 1, 1, 1, 1, 364, 1, 1, 1, 1, 1, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 365, 1, 336, 1, 1, 1, 366, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 1, 1, 1, 1, 1, 1, 367, 1, 1, 1, 368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 369, 1, 370, 1, 336, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 343, 1, 1, 1, 371, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 1, 1, 1, 1, 1, 1, 372, 1, 1, 1, 373, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 374, 1, 375, 1, 1, 1, 376, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 375, 178, 179, 178, 178, 178, 178, 178, 377, 1, 178, 178, 378, 178, 182, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 183, 184, 178, 1, 178, 185, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 1, 1, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, 188, 188, 190, 191, 191, 191, 192, 1, 379, 1, 1, 1, 380, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 379, 195, 196, 195, 195, 195, 195, 195, 381, 1, 195, 195, 378, 195, 198, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 183, 199, 195, 1, 195, 1, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 1, 1, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 202, 202, 204, 205, 205, 205, 206, 1, 382, 1, 379, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 379, 1, 383, 383, 383, 383, 383, 383, 383, 383, 384, 1, 383, 383, 385, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 384, 383, 386, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 387, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 389, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 390, 390, 392, 393, 393, 393, 394, 1, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1, 395, 395, 396, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 397, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 398, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 401, 403, 404, 404, 404, 405, 1, 406, 1, 395, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 395, 1, 407, 1, 1, 1, 408, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 407, 409, 211, 409, 409, 409, 409, 409, 410, 1, 409, 409, 411, 409, 214, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 412, 216, 409, 1, 409, 413, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 416, 416, 418, 419, 419, 419, 420, 1, 421, 1, 1, 1, 422, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 421, 227, 228, 227, 227, 227, 227, 227, 423, 1, 227, 227, 424, 227, 231, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 425, 216, 227, 1, 227, 426, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 427, 1, 428, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 428, 1, 429, 1, 1, 1, 430, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 429, 273, 274, 273, 273, 273, 273, 273, 431, 1, 273, 273, 432, 273, 433, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 434, 277, 273, 1, 273, 435, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 436, 1, 1, 1, 437, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 436, 438, 439, 438, 438, 438, 438, 438, 440, 1, 438, 438, 1, 438, 246, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 216, 438, 1, 438, 246, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 443, 443, 445, 446, 446, 446, 447, 1, 448, 1, 1, 1, 449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 438, 439, 438, 438, 438, 438, 438, 450, 1, 438, 438, 1, 438, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 199, 438, 1, 438, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 443, 443, 445, 446, 446, 446, 447, 1, 451, 1, 448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 1, 452, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 452, 438, 228, 438, 438, 438, 438, 438, 454, 1, 438, 438, 368, 438, 231, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 369, 216, 438, 1, 438, 455, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 443, 443, 445, 446, 446, 446, 447, 1, 452, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 452, 227, 228, 227, 227, 227, 227, 227, 454, 1, 227, 227, 368, 227, 231, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 369, 216, 227, 1, 227, 455, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 456, 1, 457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 457, 1, 458, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 458, 273, 274, 273, 273, 273, 273, 273, 460, 1, 273, 273, 373, 273, 433, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 374, 277, 273, 1, 273, 461, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 462, 1, 463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 463, 1, 464, 1, 1, 1, 465, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 464, 466, 467, 466, 466, 466, 466, 466, 468, 1, 466, 466, 469, 466, 470, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 215, 471, 466, 1, 466, 472, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 1, 1, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, 475, 475, 477, 478, 478, 478, 479, 1, 480, 1, 1, 1, 481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 480, 482, 483, 482, 482, 482, 482, 482, 484, 1, 482, 482, 485, 482, 486, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 232, 471, 482, 1, 482, 487, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 495, 1, 496, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 496, 1, 497, 1, 1, 1, 498, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 497, 482, 483, 482, 482, 482, 482, 482, 499, 1, 482, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 471, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 501, 1, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 482, 1, 502, 502, 502, 502, 502, 502, 502, 502, 502, 1, 502, 502, 503, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 504, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 505, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 507, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 509, 508, 508, 510, 511, 511, 511, 512, 1, 513, 513, 513, 513, 513, 513, 513, 513, 513, 1, 513, 513, 514, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 515, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 516, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 518, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 520, 519, 519, 521, 522, 522, 522, 523, 1, 524, 1, 513, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 513, 1, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 518, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 520, 519, 519, 521, 522, 522, 522, 523, 1, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 1, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 1, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 1, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 1, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 1, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 1, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 1, 525, 1, 1, 1, 526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 525, 527, 528, 527, 527, 527, 527, 527, 529, 1, 527, 527, 1, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 531, 527, 1, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 539, 1, 1, 1, 540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 539, 482, 483, 482, 482, 482, 482, 482, 541, 1, 482, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 471, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 542, 1, 1, 1, 543, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 542, 482, 483, 482, 482, 482, 482, 482, 544, 1, 482, 482, 1, 482, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 545, 482, 1, 482, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 546, 1, 542, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 542, 1, 547, 1, 1, 1, 548, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 547, 527, 528, 527, 527, 527, 527, 527, 549, 1, 527, 527, 1, 527, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 550, 527, 1, 527, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 551, 1, 1, 1, 552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 551, 553, 554, 553, 553, 553, 553, 553, 555, 1, 553, 553, 556, 553, 557, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 1, 553, 558, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 563, 564, 564, 564, 565, 1, 566, 1, 1, 1, 567, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 566, 553, 554, 553, 553, 553, 553, 553, 568, 1, 553, 553, 569, 553, 557, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 1, 553, 570, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 563, 564, 564, 564, 565, 1, 571, 1, 566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 566, 1, 572, 1, 1, 1, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 572, 574, 575, 574, 574, 574, 574, 574, 576, 1, 574, 574, 1, 574, 577, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 574, 578, 574, 579, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 583, 582, 582, 584, 585, 585, 585, 586, 1, 587, 1, 1, 1, 588, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 587, 1, 1, 1, 1, 1, 1, 1, 589, 1, 1, 1, 1, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 592, 1, 593, 1, 587, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 587, 1, 594, 1, 1, 1, 595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 594, 1, 1, 1, 1, 1, 1, 1, 596, 1, 1, 1, 1, 1, 597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 599, 1, 590, 1, 1, 1, 600, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 590, 601, 602, 601, 601, 601, 601, 601, 603, 1, 601, 601, 1, 601, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 1, 601, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 605, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 607, 606, 606, 608, 609, 609, 609, 610, 1, 611, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 590, 1, 612, 1, 1, 1, 613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 612, 601, 1, 601, 601, 601, 601, 601, 614, 1, 601, 601, 1, 601, 590, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 591, 601, 615, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 605, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 607, 606, 606, 608, 609, 609, 609, 610, 1, 612, 1, 1, 1, 613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 612, 1, 1, 1, 1, 1, 1, 1, 614, 1, 1, 1, 1, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 615, 1, 616, 1, 612, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 612, 1, 617, 1, 1, 1, 618, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 617, 1, 1, 1, 1, 1, 1, 1, 619, 1, 1, 1, 1, 1, 597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 620, 1, 591, 1, 1, 1, 621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 1, 1, 1, 1, 1, 1, 622, 1, 1, 1, 623, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 369, 1, 624, 1, 591, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 598, 1, 1, 1, 625, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 1, 1, 1, 1, 1, 1, 626, 1, 1, 1, 627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 374, 1, 628, 1, 1, 1, 629, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 628, 630, 631, 630, 630, 630, 630, 630, 632, 1, 630, 630, 1, 630, 633, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 634, 630, 1, 630, 635, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 1, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 639, 638, 638, 640, 641, 641, 641, 642, 1, 643, 1, 1, 1, 644, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 643, 645, 646, 645, 645, 645, 645, 645, 647, 1, 645, 645, 1, 645, 648, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 1, 545, 645, 1, 645, 1, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 1, 1, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 650, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 652, 651, 651, 653, 654, 654, 654, 655, 1, 656, 1, 643, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 643, 1, 657, 657, 657, 657, 657, 657, 657, 657, 658, 1, 657, 657, 659, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 658, 657, 660, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 661, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 663, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, 665, 664, 664, 666, 667, 667, 667, 668, 1, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1, 669, 669, 670, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 671, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 672, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 674, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 676, 675, 675, 677, 678, 678, 678, 679, 1, 680, 1, 669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 669, 1, 681, 1, 1, 1, 682, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 681, 683, 467, 683, 683, 683, 683, 683, 684, 1, 683, 683, 685, 683, 470, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 412, 471, 683, 1, 683, 686, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 688, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 690, 689, 689, 691, 692, 692, 692, 693, 1, 694, 1, 1, 1, 695, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 694, 482, 483, 482, 482, 482, 482, 482, 696, 1, 482, 482, 697, 482, 486, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 425, 471, 482, 1, 482, 698, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 699, 1, 700, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 700, 1, 701, 1, 1, 1, 702, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 701, 527, 528, 527, 527, 527, 527, 527, 703, 1, 527, 527, 704, 527, 705, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 434, 531, 527, 1, 527, 706, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 707, 1, 1, 1, 708, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 707, 709, 710, 709, 709, 709, 709, 709, 711, 1, 709, 709, 1, 709, 500, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 471, 709, 1, 709, 500, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 713, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 715, 714, 714, 716, 717, 717, 717, 718, 1, 719, 1, 1, 1, 720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 719, 709, 710, 709, 709, 709, 709, 709, 721, 1, 709, 709, 1, 709, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 545, 709, 1, 709, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 713, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 715, 714, 714, 716, 717, 717, 717, 718, 1, 722, 1, 719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 719, 1, 723, 1, 1, 1, 724, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 723, 709, 483, 709, 709, 709, 709, 709, 725, 1, 709, 709, 623, 709, 486, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 369, 471, 709, 1, 709, 726, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 713, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 715, 714, 714, 716, 717, 717, 717, 718, 1, 723, 1, 1, 1, 724, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 723, 482, 483, 482, 482, 482, 482, 482, 725, 1, 482, 482, 623, 482, 486, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 369, 471, 482, 1, 482, 726, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 727, 1, 728, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 728, 1, 729, 1, 1, 1, 730, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 729, 527, 528, 527, 527, 527, 527, 527, 731, 1, 527, 527, 627, 527, 705, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 374, 531, 527, 1, 527, 732, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 733, 1, 1, 1, 734, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 733, 735, 736, 735, 735, 735, 735, 735, 737, 1, 735, 735, 1, 735, 738, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 1, 1, 471, 735, 1, 735, 500, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 739, 1, 1, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 740, 741, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, 743, 742, 742, 744, 745, 745, 745, 746, 1, 747, 1, 1, 1, 748, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 747, 749, 750, 749, 749, 749, 749, 749, 751, 1, 749, 749, 1, 749, 752, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 545, 749, 1, 749, 1, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 753, 1, 1, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 755, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 757, 756, 756, 758, 759, 759, 759, 760, 1, 761, 1, 747, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 747, 1, 762, 1, 1, 1, 763, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 762, 749, 750, 749, 749, 749, 749, 749, 764, 1, 749, 749, 765, 749, 766, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 767, 471, 749, 1, 749, 500, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 1, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 755, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 757, 756, 756, 758, 759, 759, 759, 760, 1, 762, 1, 1, 1, 763, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 762, 482, 483, 482, 482, 482, 482, 482, 764, 1, 482, 482, 765, 482, 768, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 767, 471, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 769, 1, 770, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 770, 1, 771, 1, 1, 1, 772, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 771, 527, 528, 527, 527, 527, 527, 527, 773, 1, 527, 527, 774, 527, 775, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 776, 531, 527, 1, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 777, 1, 1, 1, 778, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 777, 779, 483, 779, 779, 779, 779, 779, 780, 1, 779, 779, 1, 779, 500, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 471, 779, 1, 779, 500, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 782, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 784, 783, 783, 785, 786, 786, 786, 787, 1, 788, 1, 1, 1, 789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 788, 779, 483, 779, 779, 779, 779, 779, 790, 1, 779, 779, 1, 779, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 545, 779, 1, 779, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 782, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 784, 783, 783, 785, 786, 786, 786, 787, 1, 791, 1, 788, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 788, 1, 762, 1, 1, 1, 763, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 762, 779, 483, 779, 779, 779, 779, 779, 764, 1, 779, 779, 765, 779, 768, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 767, 471, 779, 1, 779, 500, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 782, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 784, 783, 783, 785, 786, 786, 786, 787, 1, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 1, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, 1, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, 1, 792, 1, 1, 1, 793, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 792, 794, 528, 794, 794, 794, 794, 794, 795, 1, 794, 794, 1, 794, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 550, 794, 1, 794, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 797, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 798, 799, 798, 798, 800, 801, 801, 801, 802, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 1, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 1, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 1, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 1, 803, 803, 803, 803, 803, 803, 803, 803, 804, 1, 803, 803, 805, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 804, 803, 504, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 806, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 803, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 807, 808, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 809, 810, 809, 809, 811, 812, 812, 812, 813, 1, 814, 814, 814, 814, 814, 814, 814, 814, 814, 1, 814, 814, 815, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 816, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 817, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 820, 820, 822, 823, 823, 823, 824, 1, 825, 1, 814, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 814, 1, 826, 1, 1, 1, 827, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 826, 828, 750, 828, 828, 828, 828, 828, 829, 1, 828, 828, 765, 828, 830, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 767, 471, 828, 1, 828, 500, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 1, 1, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 832, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 834, 833, 833, 835, 836, 836, 836, 837, 1, 826, 1, 1, 1, 827, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 826, 482, 483, 482, 482, 482, 482, 482, 829, 1, 482, 482, 765, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 767, 471, 482, 1, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 838, 1, 839, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 839, 1, 840, 1, 1, 1, 841, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 840, 527, 528, 527, 527, 527, 527, 527, 842, 1, 527, 527, 774, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 776, 531, 527, 1, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 539, 1, 1, 1, 540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 539, 828, 750, 828, 828, 828, 828, 828, 541, 1, 828, 828, 1, 828, 830, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 1, 471, 828, 1, 828, 500, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 1, 1, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 832, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 834, 833, 833, 835, 836, 836, 836, 837, 1, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 1, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 1, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 1, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 1, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 1, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 1, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, 1, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 820, 820, 822, 823, 823, 823, 824, 1, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 1, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 1, 814, 814, 814, 814, 814, 814, 814, 814, 843, 1, 814, 814, 844, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 843, 814, 515, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 817, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, 819, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, 820, 820, 822, 823, 823, 823, 824, 1, 845, 1, 843, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 843, 1, 777, 1, 1, 1, 778, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 777, 749, 750, 749, 749, 749, 749, 749, 780, 1, 749, 749, 1, 749, 830, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 471, 749, 1, 749, 500, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 1, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 755, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 757, 756, 756, 758, 759, 759, 759, 760, 1, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 1, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 1, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 1, 846, 1, 1, 1, 847, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 846, 848, 849, 848, 848, 848, 848, 848, 850, 1, 848, 848, 1, 848, 851, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 1, 1, 550, 848, 1, 848, 1, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 852, 1, 1, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, 854, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, 856, 855, 855, 857, 858, 858, 858, 859, 1, 860, 861, 860, 860, 860, 860, 860, 1, 1, 860, 860, 1, 860, 752, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 1, 1, 860, 1, 860, 1, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 1, 1, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 863, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 865, 864, 864, 866, 867, 867, 867, 868, 1, 869, 1, 1, 1, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 869, 860, 861, 860, 860, 860, 860, 860, 871, 1, 860, 860, 765, 860, 752, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 767, 1, 860, 1, 860, 1, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 1, 1, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 863, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 865, 864, 864, 866, 867, 867, 867, 868, 1, 869, 1, 1, 1, 870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 869, 1, 1, 1, 1, 1, 1, 1, 871, 1, 1, 1, 765, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 767, 1, 872, 1, 869, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 869, 1, 873, 1, 1, 1, 874, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 873, 1, 1, 1, 1, 1, 1, 1, 875, 1, 1, 1, 774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 1, 876, 876, 876, 876, 876, 876, 876, 876, 861, 1, 876, 876, 877, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 861, 876, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 878, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 880, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 882, 881, 881, 883, 884, 884, 884, 885, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 876, 876, 886, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 860, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 878, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 880, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 882, 881, 881, 883, 884, 884, 884, 885, 1, 887, 1, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 876, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 880, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 882, 881, 881, 883, 884, 884, 884, 885, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 1, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 1, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 1, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 1, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, 1, 888, 1, 861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 861, 1, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 860, 1, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 1, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 1, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, 1, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 1, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 1, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 1, 753, 753, 753, 753, 753, 753, 753, 753, 753, 1, 753, 753, 889, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 1, 890, 869, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 892, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 894, 893, 893, 895, 896, 896, 896, 897, 1, 898, 1, 753, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 753, 1, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 892, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 894, 893, 893, 895, 896, 896, 896, 897, 1, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 1, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 1, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 1, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 1, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 1, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 1, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 1, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 1, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 1, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 1, 899, 899, 899, 899, 899, 899, 899, 899, 899, 1, 899, 899, 900, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 901, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 902, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 904, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 906, 905, 905, 907, 908, 908, 908, 909, 1, 910, 910, 910, 910, 910, 910, 910, 910, 910, 1, 910, 910, 911, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 912, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 913, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 917, 916, 916, 918, 919, 919, 919, 920, 1, 921, 1, 910, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 910, 1, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 917, 916, 916, 918, 919, 919, 919, 920, 1, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 1, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 1, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 1, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 1, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 1, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 1, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, 1, 922, 1, 1, 1, 923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 922, 924, 925, 924, 924, 924, 924, 924, 926, 1, 924, 924, 1, 924, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 1, 550, 924, 1, 924, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 1, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 928, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 930, 929, 929, 931, 932, 932, 932, 933, 1, 934, 1, 1, 1, 935, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 934, 683, 467, 683, 683, 683, 683, 683, 936, 1, 683, 683, 469, 683, 937, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 215, 471, 683, 1, 683, 472, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 688, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 690, 689, 689, 691, 692, 692, 692, 693, 1, 938, 1, 1, 1, 939, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 938, 482, 483, 482, 482, 482, 482, 482, 940, 1, 482, 482, 485, 482, 500, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 232, 471, 482, 1, 482, 487, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 941, 1, 942, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 942, 1, 943, 1, 1, 1, 944, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 943, 527, 528, 527, 527, 527, 527, 527, 945, 1, 527, 527, 946, 527, 530, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 947, 531, 527, 1, 527, 948, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 949, 949, 949, 949, 949, 949, 949, 949, 950, 1, 949, 949, 951, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 950, 949, 504, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 952, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 953, 954, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 955, 956, 955, 955, 957, 958, 958, 958, 959, 1, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1, 960, 960, 961, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 962, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 963, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 965, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 967, 966, 966, 968, 969, 969, 969, 970, 1, 971, 1, 960, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 960, 1, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 965, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 967, 966, 966, 968, 969, 969, 969, 970, 1, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 1, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 1, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 1, 960, 960, 960, 960, 960, 960, 960, 960, 972, 1, 960, 960, 973, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 972, 960, 515, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 963, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 965, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, 967, 966, 966, 968, 969, 969, 969, 970, 1, 974, 1, 972, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 972, 1, 975, 1, 1, 1, 976, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 975, 683, 467, 683, 683, 683, 683, 683, 977, 1, 683, 683, 469, 683, 937, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 215, 471, 683, 1, 683, 472, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 688, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 690, 689, 689, 691, 692, 692, 692, 693, 1, 978, 1, 1, 1, 979, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 978, 482, 483, 482, 482, 482, 482, 482, 980, 1, 482, 482, 485, 482, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 232, 545, 482, 1, 482, 981, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 982, 1, 978, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 978, 1, 983, 1, 1, 1, 984, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 983, 527, 528, 527, 527, 527, 527, 527, 985, 1, 527, 527, 946, 527, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 947, 550, 527, 1, 527, 986, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 987, 1, 1, 1, 988, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 987, 989, 990, 989, 989, 989, 989, 989, 991, 1, 989, 989, 1, 989, 992, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 1, 1, 1, 989, 1, 989, 1, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 739, 1, 1, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 993, 994, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 996, 995, 995, 997, 998, 998, 998, 999, 1, 1000, 1, 1, 1, 1001, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1000, 1002, 861, 1002, 1002, 1002, 1002, 1002, 1003, 1, 1002, 1002, 1, 1002, 752, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1002, 1, 1002, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 753, 1, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007, 1006, 1006, 1008, 1009, 1009, 1009, 1010, 1, 1011, 1, 1000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1000, 1, 1012, 1, 1, 1, 1013, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1012, 1002, 861, 1002, 1002, 1002, 1002, 1002, 1014, 1, 1002, 1002, 765, 1002, 1015, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 767, 1, 1002, 1, 1002, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007, 1006, 1006, 1008, 1009, 1009, 1009, 1010, 1, 1012, 1, 1, 1, 1013, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1012, 1, 1, 1, 1, 1, 1, 1, 1014, 1, 1, 1, 765, 1, 1016, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 767, 1, 1017, 1, 1012, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1012, 1, 1018, 1, 1, 1, 1019, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1018, 1, 1, 1, 1, 1, 1, 1, 1020, 1, 1, 1, 774, 1, 1021, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 1, 1016, 1, 1, 1, 1022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1016, 1023, 1, 1023, 1023, 1023, 1023, 1023, 1024, 1, 1023, 1023, 1, 1023, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1, 1, 1023, 1, 1023, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1027, 1027, 1029, 1030, 1030, 1030, 1031, 1, 1032, 1, 1016, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1016, 1, 1012, 1, 1, 1, 1013, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1012, 1023, 1, 1023, 1023, 1023, 1023, 1023, 1014, 1, 1023, 1023, 765, 1023, 1016, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 767, 1, 1023, 1, 1023, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1027, 1027, 1029, 1030, 1030, 1030, 1031, 1, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1, 1021, 1, 1, 1, 1033, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1021, 1034, 1, 1034, 1034, 1034, 1034, 1034, 1035, 1, 1034, 1034, 1, 1034, 1, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1, 1, 1, 1034, 1, 1034, 1, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1, 1, 1, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1038, 1038, 1040, 1041, 1041, 1041, 1042, 1, 1016, 1, 1, 1, 1022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1016, 1002, 861, 1002, 1002, 1002, 1002, 1002, 1024, 1, 1002, 1002, 1, 1002, 752, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1002, 1, 1002, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007, 1006, 1006, 1008, 1009, 1009, 1009, 1010, 1, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1, 1043, 1, 1, 1, 1044, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1043, 1045, 1046, 1045, 1045, 1045, 1045, 1045, 1047, 1, 1045, 1045, 1, 1045, 851, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1, 1, 1, 1045, 1, 1045, 1, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 852, 1, 1, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1050, 1050, 1052, 1053, 1053, 1053, 1054, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 1, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 1, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 1, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 1, 1055, 1, 1, 1, 1056, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1055, 466, 1057, 466, 466, 466, 466, 466, 1058, 1, 466, 466, 469, 466, 937, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 215, 471, 466, 1, 466, 472, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 1, 1, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, 475, 475, 477, 478, 478, 478, 479, 1, 1059, 1, 1, 1, 1060, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1059, 709, 710, 709, 709, 709, 709, 709, 1061, 1, 709, 709, 485, 709, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 232, 545, 709, 1, 709, 981, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, 713, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 714, 715, 714, 714, 716, 717, 717, 717, 718, 1, 1062, 1, 1059, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1059, 1, 1063, 1, 1, 1, 1064, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1063, 924, 925, 924, 924, 924, 924, 924, 1065, 1, 924, 924, 946, 924, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 947, 550, 924, 1, 924, 986, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 1, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, 928, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 930, 929, 929, 931, 932, 932, 932, 933, 1, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1067, 1, 1066, 1066, 1068, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1067, 1066, 901, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1069, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1072, 1072, 1074, 1075, 1075, 1075, 1076, 1, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1, 1077, 1077, 1078, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1079, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1080, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1083, 1083, 1085, 1086, 1086, 1086, 1087, 1, 1088, 1, 1077, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1077, 1, 464, 1, 1, 1, 465, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 464, 683, 467, 683, 683, 683, 683, 683, 468, 1, 683, 683, 469, 683, 470, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 215, 471, 683, 1, 683, 472, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 688, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 690, 689, 689, 691, 692, 692, 692, 693, 1, 1089, 1, 1, 1, 1090, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1089, 527, 528, 527, 527, 527, 527, 527, 1091, 1, 527, 527, 946, 527, 705, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 947, 531, 527, 1, 527, 948, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1083, 1083, 1085, 1086, 1086, 1086, 1087, 1, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1092, 1, 1077, 1077, 1093, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1092, 1077, 912, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1080, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1083, 1083, 1085, 1086, 1086, 1086, 1087, 1, 1094, 1, 1092, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1092, 1, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, 1, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 1, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 1, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 1, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 1, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 1, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 1, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 674, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 676, 675, 675, 677, 678, 678, 678, 679, 1, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 1, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 1, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 1, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 1, 669, 669, 669, 669, 669, 669, 669, 669, 1095, 1, 669, 669, 1096, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1095, 669, 1097, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 672, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, 674, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 676, 675, 675, 677, 678, 678, 678, 679, 1, 1098, 1, 1095, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1095, 1, 1099, 1, 1, 1, 1100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1099, 482, 483, 482, 482, 482, 482, 482, 1101, 1, 482, 482, 1102, 482, 486, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1103, 471, 482, 1, 482, 1104, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 491, 490, 490, 492, 493, 493, 493, 494, 1, 1105, 1, 1106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1106, 1, 1107, 1, 1, 1, 1108, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1107, 527, 528, 527, 527, 527, 527, 527, 1109, 1, 527, 527, 1110, 527, 705, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1111, 531, 527, 1, 527, 1112, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 1113, 1, 1, 1, 1114, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1113, 1115, 1116, 1115, 1115, 1115, 1115, 1115, 1117, 1, 1115, 1115, 1, 1115, 1118, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 550, 1115, 1, 1115, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1121, 1121, 1123, 1124, 1124, 1124, 1125, 1, 1126, 1127, 1126, 1126, 1126, 1126, 1126, 1, 1, 1126, 1126, 1, 1126, 1128, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1, 1, 1126, 1, 1126, 1, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1, 1, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132, 1131, 1131, 1133, 1134, 1134, 1134, 1135, 1, 1136, 1, 1, 1, 1137, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1136, 1126, 1127, 1126, 1126, 1126, 1126, 1126, 1138, 1, 1126, 1126, 469, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 215, 1, 1126, 1, 1126, 1139, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1, 1, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132, 1131, 1131, 1133, 1134, 1134, 1134, 1135, 1, 1140, 1, 1, 1, 1141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1140, 1, 1, 1, 1, 1, 1, 1, 1142, 1, 1, 1, 485, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 232, 1, 1, 1, 1, 981, 1, 1143, 1, 1140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1140, 1, 1144, 1, 1, 1, 1145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1144, 1, 1, 1, 1, 1, 1, 1, 1146, 1, 1, 1, 946, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 947, 1, 1, 1, 1, 986, 1, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1127, 1, 1147, 1147, 1148, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1127, 1147, 1, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1149, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1152, 1152, 1154, 1155, 1155, 1155, 1156, 1, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1, 1147, 1147, 1157, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1126, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1149, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1152, 1152, 1154, 1155, 1155, 1155, 1156, 1, 1158, 1, 1147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1147, 1, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, 1152, 1152, 1154, 1155, 1155, 1155, 1156, 1, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1, 1159, 1, 1127, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1127, 1, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1, 539, 1, 1, 1, 540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 539, 683, 467, 683, 683, 683, 683, 683, 541, 1, 683, 683, 1, 683, 1160, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 471, 683, 1, 683, 500, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 688, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 690, 689, 689, 691, 692, 692, 692, 693, 1, 1161, 1, 1, 1, 1162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1161, 1163, 1164, 1163, 1163, 1163, 1163, 1163, 1165, 1, 1163, 1163, 1, 1163, 1166, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1, 1, 1, 1163, 1, 1163, 1, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1167, 1, 1, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1171, 1170, 1170, 1172, 1173, 1173, 1173, 1174, 1, 1175, 1, 1, 1, 1176, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1175, 1177, 1178, 1177, 1177, 1177, 1177, 1177, 1179, 1, 1177, 1177, 1, 1177, 1180, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1177, 1, 1177, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1181, 1, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1184, 1184, 1186, 1187, 1187, 1187, 1188, 1, 1189, 1, 1175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1175, 1, 1190, 1, 1, 1, 1191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1190, 1177, 1178, 1177, 1177, 1177, 1177, 1177, 1192, 1, 1177, 1177, 1, 1177, 1193, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1177, 1194, 1177, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1184, 1184, 1186, 1187, 1187, 1187, 1188, 1, 1190, 1, 1, 1, 1191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1190, 1, 1, 1, 1, 1, 1, 1, 1192, 1, 1, 1, 1, 1, 1195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1194, 1, 1196, 1, 1190, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1190, 1, 1197, 1, 1, 1, 1198, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1197, 1, 1, 1, 1, 1, 1, 1, 1199, 1, 1, 1, 1, 1, 1200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1201, 1, 1195, 1, 1, 1, 1202, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1195, 1203, 1, 1203, 1203, 1203, 1203, 1203, 1204, 1, 1203, 1203, 1, 1203, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1203, 1, 1203, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1209, 1210, 1210, 1210, 1211, 1, 1212, 1, 1195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1195, 1, 1190, 1, 1, 1, 1191, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1190, 1203, 1, 1203, 1203, 1203, 1203, 1203, 1192, 1, 1203, 1203, 1, 1203, 1195, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1203, 1194, 1203, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1206, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1207, 1207, 1209, 1210, 1210, 1210, 1211, 1, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1200, 1, 1, 1, 1213, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1200, 1214, 1, 1214, 1214, 1214, 1214, 1214, 1215, 1, 1214, 1214, 1, 1214, 1, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1, 1, 1, 1214, 1, 1214, 1, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1, 1, 1, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1219, 1218, 1218, 1220, 1221, 1221, 1221, 1222, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1178, 1, 1223, 1223, 1224, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1178, 1223, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1228, 1228, 1230, 1231, 1231, 1231, 1232, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1223, 1223, 1233, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1234, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1228, 1228, 1230, 1231, 1231, 1231, 1232, 1, 1235, 1, 1223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1223, 1, 1236, 1, 1, 1, 1237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1236, 1234, 1178, 1234, 1234, 1234, 1234, 1234, 1238, 1, 1234, 1234, 1, 1234, 1180, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1234, 1194, 1234, 1, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1241, 1241, 1243, 1244, 1244, 1244, 1245, 1, 1236, 1, 1, 1, 1237, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1236, 1, 1, 1, 1, 1, 1, 1, 1238, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1194, 1, 1246, 1, 1236, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1236, 1, 1247, 1, 1, 1, 1248, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1247, 1, 1, 1, 1, 1, 1, 1, 1249, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1201, 1, 1234, 1178, 1234, 1234, 1234, 1234, 1234, 1, 1, 1234, 1234, 1, 1234, 1180, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1234, 1, 1234, 1, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1240, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242, 1241, 1241, 1243, 1244, 1244, 1244, 1245, 1, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1228, 1228, 1230, 1231, 1231, 1231, 1232, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1, 1250, 1, 1178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1178, 1, 1195, 1, 1, 1, 1202, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1195, 1177, 1178, 1177, 1177, 1177, 1177, 1177, 1204, 1, 1177, 1177, 1, 1177, 1180, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1177, 1, 1177, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1184, 1184, 1186, 1187, 1187, 1187, 1188, 1, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1, 1251, 1, 1, 1, 1252, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1251, 1253, 1254, 1253, 1253, 1253, 1253, 1253, 1255, 1, 1253, 1253, 1, 1253, 1256, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1, 1, 1253, 1, 1253, 1, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1257, 1, 1, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1261, 1260, 1260, 1262, 1263, 1263, 1263, 1264, 1, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1, 1181, 1181, 1265, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1, 1266, 1236, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1270, 1269, 1269, 1271, 1272, 1272, 1272, 1273, 1, 1274, 1, 1181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1181, 1, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1270, 1269, 1269, 1271, 1272, 1272, 1272, 1273, 1, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 1, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 1, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 1, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 1, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1, 1275, 1275, 1276, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1277, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1278, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1279, 1280, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1282, 1281, 1281, 1283, 1284, 1284, 1284, 1285, 1, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1, 1286, 1286, 1287, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1288, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1289, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1291, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1293, 1292, 1292, 1294, 1295, 1295, 1295, 1296, 1, 1297, 1, 1286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1286, 1, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1291, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1293, 1292, 1292, 1294, 1295, 1295, 1295, 1296, 1, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1, 597, 1, 1, 1, 1298, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 597, 1299, 1300, 1299, 1299, 1299, 1299, 1299, 1301, 1, 1299, 1299, 1, 1299, 1, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1299, 1, 1299, 1, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1305, 1304, 1304, 1306, 1307, 1307, 1307, 1308, 1, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 575, 1, 1309, 1309, 1310, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 575, 1309, 1, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1311, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315, 1314, 1314, 1316, 1317, 1317, 1317, 1318, 1, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1, 1309, 1309, 1319, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1320, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1311, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315, 1314, 1314, 1316, 1317, 1317, 1317, 1318, 1, 1321, 1, 1309, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1309, 1, 1322, 1, 1, 1, 1323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1322, 1320, 575, 1320, 1320, 1320, 1320, 1320, 1324, 1, 1320, 1320, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 578, 1320, 579, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 1327, 1327, 1329, 1330, 1330, 1330, 1331, 1, 1332, 1, 1, 1, 1333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1332, 1, 1, 1, 1, 1, 1, 1, 1334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 592, 1, 1335, 1, 1332, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1332, 1, 1336, 1, 1, 1, 1337, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1336, 1, 1, 1, 1, 1, 1, 1, 1338, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 599, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1315, 1314, 1314, 1316, 1317, 1317, 1317, 1318, 1, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1, 1339, 1, 575, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 575, 1, 1340, 1, 1, 1, 1341, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1340, 574, 1342, 574, 574, 574, 574, 574, 1343, 1, 574, 574, 1, 574, 1320, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 574, 578, 574, 579, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 583, 582, 582, 584, 585, 585, 585, 586, 1, 1344, 1, 1, 1, 1345, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1344, 601, 602, 601, 601, 601, 601, 601, 1346, 1, 601, 601, 1, 601, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 591, 601, 592, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 605, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 607, 606, 606, 608, 609, 609, 609, 610, 1, 1347, 1, 1344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1344, 1, 1348, 1, 1, 1, 1349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1348, 1299, 1300, 1299, 1299, 1299, 1299, 1299, 1350, 1, 1299, 1299, 1, 1299, 1, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1299, 598, 1299, 599, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1303, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1305, 1304, 1304, 1306, 1307, 1307, 1307, 1308, 1, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1352, 1, 1351, 1351, 1353, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1352, 1351, 1277, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1354, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1356, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1358, 1357, 1357, 1359, 1360, 1360, 1360, 1361, 1, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1, 1362, 1362, 1363, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1364, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1365, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369, 1368, 1368, 1370, 1371, 1371, 1371, 1372, 1, 1373, 1, 1362, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1362, 1, 572, 1, 1, 1, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 572, 1320, 575, 1320, 1320, 1320, 1320, 1320, 576, 1, 1320, 1320, 1, 1320, 577, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 578, 1320, 579, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 1327, 1327, 1329, 1330, 1330, 1330, 1331, 1, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369, 1368, 1368, 1370, 1371, 1371, 1371, 1372, 1, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1374, 1, 1362, 1362, 1375, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1374, 1362, 1288, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1365, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1367, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369, 1368, 1368, 1370, 1371, 1371, 1371, 1372, 1, 1376, 1, 1374, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1374, 1, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 1, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 1, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, 1, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, 1, 1377, 1377, 1379, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, 1377, 1380, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1381, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1383, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1385, 1384, 1384, 1386, 1387, 1387, 1387, 1388, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1389, 1389, 1390, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1391, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1392, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1394, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1396, 1395, 1395, 1397, 1398, 1398, 1398, 1399, 1, 1400, 1, 1389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1389, 1, 1401, 1, 1, 1, 1402, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1401, 1320, 575, 1320, 1320, 1320, 1320, 1320, 1403, 1, 1320, 1320, 1, 1320, 577, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 578, 1320, 1404, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 1327, 1327, 1329, 1330, 1330, 1330, 1331, 1, 1405, 1, 1, 1, 1406, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1405, 1, 1, 1, 1, 1, 1, 1, 1407, 1, 1, 1, 1, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 1408, 1, 1409, 1, 1405, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1405, 1, 1410, 1, 1, 1, 1411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1410, 1, 1, 1, 1, 1, 1, 1, 1412, 1, 1, 1, 1, 1, 597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 1413, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1394, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1396, 1395, 1395, 1397, 1398, 1398, 1398, 1399, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1414, 1, 1389, 1389, 1415, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1414, 1389, 1416, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1392, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1394, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1395, 1396, 1395, 1395, 1397, 1398, 1398, 1398, 1399, 1, 1417, 1, 1414, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1414, 1, 1418, 1, 1, 1, 1419, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1418, 1, 1, 1, 1, 1, 1, 1, 1420, 1, 1, 1, 1, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 591, 1, 1421, 1, 1422, 1, 1418, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1418, 1, 1423, 1, 1, 1, 1424, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1423, 1, 1, 1, 1, 1, 1, 1, 1425, 1, 1, 1, 1, 1, 597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 598, 1, 1426, 1, 1427, 1, 1, 1, 1428, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1427, 1429, 1430, 1429, 1429, 1429, 1429, 1429, 1431, 1, 1429, 1429, 1432, 1429, 1433, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1429, 1, 1429, 1434, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1436, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1437, 1437, 1439, 1440, 1440, 1440, 1441, 1, 569, 1, 1, 1, 1442, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 569, 1, 1, 1, 1, 1, 1, 1, 1443, 1, 1, 1, 569, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 570, 1, 1444, 1, 569, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 569, 1, 1432, 1, 1, 1, 1445, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1432, 1, 1, 1, 1, 1, 1, 1, 1446, 1, 1, 1, 1432, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1434, 1, 1447, 1, 1, 1, 1448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1447, 1449, 1450, 1449, 1449, 1449, 1449, 1449, 1451, 1, 1449, 1449, 1, 1449, 1452, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1, 1, 1, 1449, 1, 1449, 1, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1453, 1, 1, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1455, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1457, 1456, 1456, 1458, 1459, 1459, 1459, 1460, 1, 1461, 1, 1, 1, 1462, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1461, 1463, 1464, 1463, 1463, 1463, 1463, 1463, 1465, 1, 1463, 1463, 1, 1463, 1466, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1463, 1, 1463, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1467, 1, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1469, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1471, 1470, 1470, 1472, 1473, 1473, 1473, 1474, 1, 1475, 1, 1461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1461, 1, 1476, 1, 1, 1, 1477, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1476, 1463, 1464, 1463, 1463, 1463, 1463, 1463, 1478, 1, 1463, 1463, 1479, 1463, 1480, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1481, 1, 1, 1463, 1, 1463, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1469, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1471, 1470, 1470, 1472, 1473, 1473, 1473, 1474, 1, 1476, 1, 1, 1, 1477, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1476, 1, 1, 1, 1, 1, 1, 1, 1478, 1, 1, 1, 1479, 1, 1482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1481, 1, 1483, 1, 1476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1476, 1, 1484, 1, 1, 1, 1485, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1484, 1, 1, 1, 1, 1, 1, 1, 1486, 1, 1, 1, 1487, 1, 1488, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1489, 1, 1490, 1, 1, 1, 1491, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1490, 1, 1, 1, 1, 1, 1, 1, 1492, 1, 1, 1, 1490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1493, 1, 1, 1, 1, 1, 570, 1, 1494, 1, 1490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1490, 1, 1495, 1, 1, 1, 1496, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1495, 1, 1, 1, 1, 1, 1, 1, 1497, 1, 1, 1, 1495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1498, 1, 1, 1, 1, 1, 1434, 1, 1499, 1, 1, 1, 1500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1499, 1501, 1502, 1501, 1501, 1501, 1501, 1501, 1503, 1, 1501, 1501, 1, 1501, 1504, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1, 1, 1, 1501, 1, 1501, 1, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1, 1, 1, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1506, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1508, 1507, 1507, 1509, 1510, 1510, 1510, 1511, 1, 1512, 1, 1, 1, 1513, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1512, 553, 554, 553, 553, 553, 553, 553, 1514, 1, 553, 553, 1, 553, 557, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 1, 553, 1, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 562, 561, 561, 563, 564, 564, 564, 565, 1, 1515, 1, 1512, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1512, 1, 1516, 1, 1, 1, 1517, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1516, 1429, 1430, 1429, 1429, 1429, 1429, 1429, 1518, 1, 1429, 1429, 1, 1429, 1433, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1429, 1, 1429, 1, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1436, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1437, 1437, 1439, 1440, 1440, 1440, 1441, 1, 1320, 575, 1320, 1320, 1320, 1320, 1320, 1, 1, 1320, 1320, 1, 1320, 1519, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 1, 1320, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1326, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 1327, 1327, 1329, 1330, 1330, 1330, 1331, 1, 1482, 1, 1, 1, 1520, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1482, 1521, 1, 1521, 1521, 1521, 1521, 1521, 1522, 1, 1521, 1521, 1, 1521, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1, 1, 1521, 1, 1521, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1524, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1526, 1525, 1525, 1527, 1528, 1528, 1528, 1529, 1, 1530, 1, 1482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1482, 1, 1476, 1, 1, 1, 1477, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1476, 1521, 1, 1521, 1521, 1521, 1521, 1521, 1478, 1, 1521, 1521, 1479, 1521, 1482, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1481, 1, 1, 1521, 1, 1521, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1524, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1526, 1525, 1525, 1527, 1528, 1528, 1528, 1529, 1, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1, 1488, 1, 1, 1, 1531, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1488, 1532, 1, 1532, 1532, 1532, 1532, 1532, 1533, 1, 1532, 1532, 1, 1532, 1, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1, 1, 1, 1532, 1, 1532, 1, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1, 1, 1, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1535, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1537, 1536, 1536, 1538, 1539, 1539, 1539, 1540, 1, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1464, 1, 1541, 1541, 1542, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1464, 1541, 1, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1543, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1547, 1546, 1546, 1548, 1549, 1549, 1549, 1550, 1, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1, 1541, 1541, 1551, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1552, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1543, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1547, 1546, 1546, 1548, 1549, 1549, 1549, 1550, 1, 1553, 1, 1541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1541, 1, 1554, 1, 1, 1, 1555, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1554, 1552, 1464, 1552, 1552, 1552, 1552, 1552, 1556, 1, 1552, 1552, 1479, 1552, 1466, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1481, 1, 1, 1552, 1, 1552, 1, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1, 1, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1560, 1559, 1559, 1561, 1562, 1562, 1562, 1563, 1, 1554, 1, 1, 1, 1555, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1554, 1, 1, 1, 1, 1, 1, 1, 1556, 1, 1, 1, 1479, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1481, 1, 1564, 1, 1554, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1554, 1, 1565, 1, 1, 1, 1566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1565, 1, 1, 1, 1, 1, 1, 1, 1567, 1, 1, 1, 1487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1489, 1, 1552, 1464, 1552, 1552, 1552, 1552, 1552, 1, 1, 1552, 1552, 1, 1552, 1466, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1, 1, 1552, 1, 1552, 1, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1, 1, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1560, 1559, 1559, 1561, 1562, 1562, 1562, 1563, 1, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1547, 1546, 1546, 1548, 1549, 1549, 1549, 1550, 1, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1, 1568, 1, 1464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1464, 1, 1482, 1, 1, 1, 1520, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1482, 1463, 1464, 1463, 1463, 1463, 1463, 1463, 1522, 1, 1463, 1463, 1, 1463, 1466, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1463, 1, 1463, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1469, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1471, 1470, 1470, 1472, 1473, 1473, 1473, 1474, 1, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1, 1569, 1, 1, 1, 1570, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1569, 1571, 1572, 1571, 1571, 1571, 1571, 1571, 1573, 1, 1571, 1571, 1, 1571, 1574, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1, 1, 1, 1571, 1, 1571, 1, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1575, 1, 1, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1571, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1577, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1579, 1578, 1578, 1580, 1581, 1581, 1581, 1582, 1, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1, 1467, 1467, 1583, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1, 1584, 1554, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1588, 1587, 1587, 1589, 1590, 1590, 1590, 1591, 1, 1592, 1, 1467, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1467, 1, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1588, 1587, 1587, 1589, 1590, 1590, 1590, 1591, 1, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1, 1593, 1, 1, 1, 1594, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1593, 1595, 1596, 1595, 1595, 1595, 1595, 1595, 1597, 1, 1595, 1595, 1, 1595, 1598, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1, 1, 216, 1595, 1, 1595, 246, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1599, 1, 1, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1601, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1603, 1602, 1602, 1604, 1605, 1605, 1605, 1606, 1, 1607, 1, 1, 1, 1608, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1607, 1609, 1610, 1609, 1609, 1609, 1609, 1609, 1611, 1, 1609, 1609, 1, 1609, 1612, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 199, 1609, 1, 1609, 1, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1613, 1, 1, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1615, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1617, 1616, 1616, 1618, 1619, 1619, 1619, 1620, 1, 1621, 1, 1607, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1607, 1, 1622, 1, 1, 1, 1623, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1622, 1609, 1610, 1609, 1609, 1609, 1609, 1609, 1624, 1, 1609, 1609, 1625, 1609, 1626, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 767, 216, 1609, 1, 1609, 246, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 1, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1615, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1617, 1616, 1616, 1618, 1619, 1619, 1619, 1620, 1, 1622, 1, 1, 1, 1623, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1622, 227, 228, 227, 227, 227, 227, 227, 1624, 1, 227, 227, 1625, 227, 1627, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 767, 216, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 1628, 1, 1629, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1629, 1, 1630, 1, 1, 1, 1631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1630, 273, 274, 273, 273, 273, 273, 273, 1632, 1, 273, 273, 1633, 273, 1634, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 776, 277, 273, 1, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 1635, 1, 1, 1, 1636, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1635, 1637, 228, 1637, 1637, 1637, 1637, 1637, 1638, 1, 1637, 1637, 1, 1637, 246, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 216, 1637, 1, 1637, 246, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1640, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1641, 1641, 1643, 1644, 1644, 1644, 1645, 1, 1646, 1, 1, 1, 1647, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1646, 1637, 228, 1637, 1637, 1637, 1637, 1637, 1648, 1, 1637, 1637, 1, 1637, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 199, 1637, 1, 1637, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1640, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1641, 1641, 1643, 1644, 1644, 1644, 1645, 1, 1649, 1, 1646, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1646, 1, 1622, 1, 1, 1, 1623, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1622, 1637, 228, 1637, 1637, 1637, 1637, 1637, 1624, 1, 1637, 1637, 1625, 1637, 1627, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 767, 216, 1637, 1, 1637, 246, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1640, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1641, 1641, 1643, 1644, 1644, 1644, 1645, 1, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1, 1650, 1, 1, 1, 1651, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1650, 1652, 274, 1652, 1652, 1652, 1652, 1652, 1653, 1, 1652, 1652, 1, 1652, 1, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1, 1, 295, 1652, 1, 1652, 1, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1, 1, 1, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1655, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1657, 1656, 1656, 1658, 1659, 1659, 1659, 1660, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 1, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 1, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 1, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 1, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1662, 1, 1661, 1661, 1663, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1662, 1661, 250, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1664, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1668, 1667, 1667, 1669, 1670, 1670, 1670, 1671, 1, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1, 1672, 1672, 1673, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1674, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1675, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1679, 1678, 1678, 1680, 1681, 1681, 1681, 1682, 1, 1683, 1, 1672, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1672, 1, 1684, 1, 1, 1, 1685, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1684, 1686, 1610, 1686, 1686, 1686, 1686, 1686, 1687, 1, 1686, 1686, 1625, 1686, 1688, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 767, 216, 1686, 1, 1686, 246, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1, 1, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1690, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1692, 1691, 1691, 1693, 1694, 1694, 1694, 1695, 1, 1684, 1, 1, 1, 1685, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1684, 227, 228, 227, 227, 227, 227, 227, 1687, 1, 227, 227, 1625, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 767, 216, 227, 1, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 1696, 1, 1697, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1697, 1, 1698, 1, 1, 1, 1699, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1698, 273, 274, 273, 273, 273, 273, 273, 1700, 1, 273, 273, 1633, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 776, 277, 273, 1, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 285, 1, 1, 1, 286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 285, 1686, 1610, 1686, 1686, 1686, 1686, 1686, 287, 1, 1686, 1686, 1, 1686, 1688, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1, 216, 1686, 1, 1686, 246, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1, 1, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1690, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1692, 1691, 1691, 1693, 1694, 1694, 1694, 1695, 1, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1679, 1678, 1678, 1680, 1681, 1681, 1681, 1682, 1, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1701, 1, 1672, 1672, 1702, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1701, 1672, 261, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1675, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1679, 1678, 1678, 1680, 1681, 1681, 1681, 1682, 1, 1703, 1, 1701, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1701, 1, 1635, 1, 1, 1, 1636, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1635, 1609, 1610, 1609, 1609, 1609, 1609, 1609, 1638, 1, 1609, 1609, 1, 1609, 1688, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 216, 1609, 1, 1609, 246, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 1, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1615, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1617, 1616, 1616, 1618, 1619, 1619, 1619, 1620, 1, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1, 1704, 1, 1, 1, 1705, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1704, 1706, 1707, 1706, 1706, 1706, 1706, 1706, 1708, 1, 1706, 1706, 1, 1706, 1709, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1, 1, 295, 1706, 1, 1706, 1, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1710, 1, 1, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1712, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1714, 1713, 1713, 1715, 1716, 1716, 1716, 1717, 1, 1718, 1719, 1718, 1718, 1718, 1718, 1718, 1, 1, 1718, 1718, 1, 1718, 1612, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1, 1, 1718, 1, 1718, 1, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1, 1, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1723, 1722, 1722, 1724, 1725, 1725, 1725, 1726, 1, 1727, 1, 1, 1, 1728, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1727, 1718, 1719, 1718, 1718, 1718, 1718, 1718, 1729, 1, 1718, 1718, 1625, 1718, 1612, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 767, 1, 1718, 1, 1718, 1, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1, 1, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1723, 1722, 1722, 1724, 1725, 1725, 1725, 1726, 1, 1727, 1, 1, 1, 1728, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1727, 1, 1, 1, 1, 1, 1, 1, 1729, 1, 1, 1, 1625, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 767, 1, 1730, 1, 1727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1727, 1, 1731, 1, 1, 1, 1732, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1731, 1, 1, 1, 1, 1, 1, 1, 1733, 1, 1, 1, 1633, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 1, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1719, 1, 1734, 1734, 1735, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1719, 1734, 1, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1736, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1740, 1739, 1739, 1741, 1742, 1742, 1742, 1743, 1, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1734, 1734, 1744, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1718, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1736, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1740, 1739, 1739, 1741, 1742, 1742, 1742, 1743, 1, 1745, 1, 1734, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1734, 1, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1740, 1739, 1739, 1741, 1742, 1742, 1742, 1743, 1, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1, 1746, 1, 1719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1719, 1, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1, 1613, 1613, 1747, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1, 1748, 1727, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1752, 1751, 1751, 1753, 1754, 1754, 1754, 1755, 1, 1756, 1, 1613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1613, 1, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1752, 1751, 1751, 1753, 1754, 1754, 1754, 1755, 1, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 1, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 1, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 1, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 1, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1, 1757, 1757, 1758, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1759, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1760, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1762, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1764, 1763, 1763, 1765, 1766, 1766, 1766, 1767, 1, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1, 1768, 1768, 1769, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1770, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1771, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775, 1774, 1774, 1776, 1777, 1777, 1777, 1778, 1, 1779, 1, 1768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1768, 1, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1773, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775, 1774, 1774, 1776, 1777, 1777, 1777, 1778, 1, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1, 1780, 1, 1, 1, 1781, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1780, 1782, 1783, 1782, 1782, 1782, 1782, 1782, 1784, 1, 1782, 1782, 1, 1782, 1, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 1, 295, 1782, 1, 1782, 1, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 1, 1, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1788, 1787, 1787, 1789, 1790, 1790, 1790, 1791, 1, 1792, 1, 1, 1, 1793, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1792, 409, 211, 409, 409, 409, 409, 409, 1794, 1, 409, 409, 213, 409, 1795, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 215, 216, 409, 1, 409, 217, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 416, 416, 418, 419, 419, 419, 420, 1, 1796, 1, 1, 1, 1797, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1796, 227, 228, 227, 227, 227, 227, 227, 1798, 1, 227, 227, 230, 227, 246, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 232, 216, 227, 1, 227, 233, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 1799, 1, 1800, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1800, 1, 1801, 1, 1, 1, 1802, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1801, 273, 274, 273, 273, 273, 273, 273, 1803, 1, 273, 273, 1804, 273, 276, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 947, 277, 273, 1, 273, 1805, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1807, 1, 1806, 1806, 1808, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1807, 1806, 250, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1809, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1811, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1813, 1812, 1812, 1814, 1815, 1815, 1815, 1816, 1, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1, 1817, 1817, 1818, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1819, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1820, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1824, 1823, 1823, 1825, 1826, 1826, 1826, 1827, 1, 1828, 1, 1817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1817, 1, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1824, 1823, 1823, 1825, 1826, 1826, 1826, 1827, 1, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1829, 1, 1817, 1817, 1830, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1829, 1817, 261, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1820, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1824, 1823, 1823, 1825, 1826, 1826, 1826, 1827, 1, 1831, 1, 1829, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1829, 1, 1832, 1, 1, 1, 1833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1832, 409, 211, 409, 409, 409, 409, 409, 1834, 1, 409, 409, 213, 409, 1795, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 215, 216, 409, 1, 409, 217, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 416, 416, 418, 419, 419, 419, 420, 1, 1835, 1, 1, 1, 1836, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1835, 227, 228, 227, 227, 227, 227, 227, 1837, 1, 227, 227, 230, 227, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 232, 199, 227, 1, 227, 1838, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 1839, 1, 1835, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1835, 1, 1840, 1, 1, 1, 1841, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1840, 273, 274, 273, 273, 273, 273, 273, 1842, 1, 273, 273, 1804, 273, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 947, 295, 273, 1, 273, 1843, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 1844, 1, 1, 1, 1845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1844, 1846, 1847, 1846, 1846, 1846, 1846, 1846, 1848, 1, 1846, 1846, 1, 1846, 1849, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1, 1, 1, 1846, 1, 1846, 1, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1599, 1, 1, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 1851, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1853, 1852, 1852, 1854, 1855, 1855, 1855, 1856, 1, 1857, 1, 1, 1, 1858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1857, 1859, 1719, 1859, 1859, 1859, 1859, 1859, 1860, 1, 1859, 1859, 1, 1859, 1612, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1859, 1, 1859, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1613, 1, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1864, 1863, 1863, 1865, 1866, 1866, 1866, 1867, 1, 1868, 1, 1857, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1857, 1, 1869, 1, 1, 1, 1870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1869, 1859, 1719, 1859, 1859, 1859, 1859, 1859, 1871, 1, 1859, 1859, 1625, 1859, 1872, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 767, 1, 1859, 1, 1859, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1864, 1863, 1863, 1865, 1866, 1866, 1866, 1867, 1, 1869, 1, 1, 1, 1870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1869, 1, 1, 1, 1, 1, 1, 1, 1871, 1, 1, 1, 1625, 1, 1873, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 767, 1, 1874, 1, 1869, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1869, 1, 1875, 1, 1, 1, 1876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1875, 1, 1, 1, 1, 1, 1, 1, 1877, 1, 1, 1, 1633, 1, 1878, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 1, 1873, 1, 1, 1, 1879, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1873, 1880, 1, 1880, 1880, 1880, 1880, 1880, 1881, 1, 1880, 1880, 1, 1880, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1, 1, 1880, 1, 1880, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1883, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1885, 1884, 1884, 1886, 1887, 1887, 1887, 1888, 1, 1889, 1, 1873, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1873, 1, 1869, 1, 1, 1, 1870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1869, 1880, 1, 1880, 1880, 1880, 1880, 1880, 1871, 1, 1880, 1880, 1625, 1880, 1873, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 767, 1, 1880, 1, 1880, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1883, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1885, 1884, 1884, 1886, 1887, 1887, 1887, 1888, 1, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1, 1878, 1, 1, 1, 1890, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1878, 1891, 1, 1891, 1891, 1891, 1891, 1891, 1892, 1, 1891, 1891, 1, 1891, 1, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1, 1, 1, 1891, 1, 1891, 1, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1, 1, 1, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1894, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1896, 1895, 1895, 1897, 1898, 1898, 1898, 1899, 1, 1873, 1, 1, 1, 1879, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1873, 1859, 1719, 1859, 1859, 1859, 1859, 1859, 1881, 1, 1859, 1859, 1, 1859, 1612, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1859, 1, 1859, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1864, 1863, 1863, 1865, 1866, 1866, 1866, 1867, 1, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1, 1900, 1, 1, 1, 1901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1900, 1902, 1903, 1902, 1902, 1902, 1902, 1902, 1904, 1, 1902, 1902, 1, 1902, 1709, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1, 1, 1, 1902, 1, 1902, 1, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1710, 1, 1, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1906, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1908, 1907, 1907, 1909, 1910, 1910, 1910, 1911, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 1912, 1, 1, 1, 1913, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1912, 210, 1914, 210, 210, 210, 210, 210, 1915, 1, 210, 210, 213, 210, 1795, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 215, 216, 210, 1, 210, 217, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 220, 220, 222, 223, 223, 223, 224, 1, 1916, 1, 1, 1, 1917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1916, 438, 439, 438, 438, 438, 438, 438, 1918, 1, 438, 438, 230, 438, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 232, 199, 438, 1, 438, 1838, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, 442, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, 444, 443, 443, 445, 446, 446, 446, 447, 1, 1919, 1, 1916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1916, 1, 1920, 1, 1, 1, 1921, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1920, 1782, 1783, 1782, 1782, 1782, 1782, 1782, 1922, 1, 1782, 1782, 1804, 1782, 1, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 947, 295, 1782, 1, 1782, 1843, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 1, 1, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1788, 1787, 1787, 1789, 1790, 1790, 1790, 1791, 1, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1924, 1, 1923, 1923, 1925, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1924, 1923, 1759, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1926, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1928, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1930, 1929, 1929, 1931, 1932, 1932, 1932, 1933, 1, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1, 1934, 1934, 1935, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1936, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1937, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1939, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1941, 1940, 1940, 1942, 1943, 1943, 1943, 1944, 1, 1945, 1, 1934, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1934, 1, 208, 1, 1, 1, 209, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 208, 409, 211, 409, 409, 409, 409, 409, 212, 1, 409, 409, 213, 409, 214, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 215, 216, 409, 1, 409, 217, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 416, 416, 418, 419, 419, 419, 420, 1, 1946, 1, 1, 1, 1947, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1946, 273, 274, 273, 273, 273, 273, 273, 1948, 1, 273, 273, 1804, 273, 433, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 947, 277, 273, 1, 273, 1805, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1939, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1941, 1940, 1940, 1942, 1943, 1943, 1943, 1944, 1, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1949, 1, 1934, 1934, 1950, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1949, 1934, 1770, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1937, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1939, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1941, 1940, 1940, 1942, 1943, 1943, 1943, 1944, 1, 1951, 1, 1949, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1949, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 1, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 1, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 1, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 401, 403, 404, 404, 404, 405, 1, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 1, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 1, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 1, 395, 395, 395, 395, 395, 395, 395, 395, 1952, 1, 395, 395, 1953, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1952, 395, 1954, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 398, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 401, 403, 404, 404, 404, 405, 1, 1955, 1, 1952, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1952, 1, 1956, 1, 1, 1, 1957, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1956, 227, 228, 227, 227, 227, 227, 227, 1958, 1, 227, 227, 1959, 227, 231, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1103, 216, 227, 1, 227, 1960, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 236, 236, 238, 239, 239, 239, 240, 1, 1961, 1, 1962, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1962, 1, 1963, 1, 1, 1, 1964, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1963, 273, 274, 273, 273, 273, 273, 273, 1965, 1, 273, 273, 1966, 273, 433, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1111, 277, 273, 1, 273, 1967, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 280, 280, 282, 283, 283, 283, 284, 1, 1968, 1, 1, 1, 1969, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1968, 1970, 1971, 1970, 1970, 1970, 1970, 1970, 1972, 1, 1970, 1970, 1973, 1970, 1974, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1975, 295, 1970, 1, 1970, 1, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1, 1, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1977, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1979, 1978, 1978, 1980, 1981, 1981, 1981, 1982, 1, 1983, 1, 1, 1, 1984, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1983, 1985, 1986, 1985, 1985, 1985, 1985, 1985, 1987, 1, 1985, 1985, 378, 1985, 1988, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 183, 1989, 1985, 1, 1985, 1990, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 1, 1, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1994, 1993, 1993, 1995, 1996, 1996, 1996, 1997, 1, 1998, 1, 1, 1, 1999, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1998, 2000, 2001, 2000, 2000, 2000, 2000, 2000, 2002, 1, 2000, 2000, 378, 2000, 2003, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 183, 2004, 2000, 1, 2000, 1, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 1, 1, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2008, 2007, 2007, 2009, 2010, 2010, 2010, 2011, 1, 2012, 1, 1998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1998, 1, 2013, 1, 1, 1, 2014, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2013, 2015, 2016, 2015, 2015, 2015, 2015, 2015, 2017, 1, 2015, 2015, 2018, 2015, 2019, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 2020, 2021, 2015, 1, 2015, 2022, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 1, 1, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2024, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2026, 2025, 2025, 2027, 2028, 2028, 2028, 2029, 1, 2030, 1, 1, 1, 2031, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2030, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2034, 1, 2032, 2032, 2035, 2032, 2036, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2037, 2021, 2032, 1, 2032, 2038, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2046, 1, 2047, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2047, 1, 2048, 1, 1, 1, 2049, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2048, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2050, 1, 2032, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 2021, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2052, 1, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2032, 1, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 1, 2053, 2053, 2054, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2055, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2056, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2058, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2060, 2059, 2059, 2061, 2062, 2062, 2062, 2063, 1, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 1, 2064, 2064, 2065, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2066, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2067, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2069, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2071, 2070, 2070, 2072, 2073, 2073, 2073, 2074, 1, 2075, 1, 2064, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2064, 1, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2069, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2071, 2070, 2070, 2072, 2073, 2073, 2073, 2074, 1, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 1, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 1, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 1, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 1, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 1, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 1, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 1, 2076, 1, 1, 1, 2077, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2076, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2080, 1, 2078, 2078, 1, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 2082, 2078, 1, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2090, 1, 1, 1, 2091, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2090, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2092, 1, 2032, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 2021, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2093, 1, 1, 1, 2094, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2093, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2095, 1, 2032, 2032, 1, 2032, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 2004, 2032, 1, 2032, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2096, 1, 2093, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2093, 1, 2097, 1, 1, 1, 2098, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2097, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2099, 1, 2078, 2078, 1, 2078, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 2100, 2078, 1, 2078, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2101, 1, 1, 1, 2102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2101, 2103, 2104, 2103, 2103, 2103, 2103, 2103, 2105, 1, 2103, 2103, 2106, 2103, 2107, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 1, 2103, 2108, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2110, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2112, 2111, 2111, 2113, 2114, 2114, 2114, 2115, 1, 2116, 1, 1, 1, 2117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2116, 2103, 2104, 2103, 2103, 2103, 2103, 2103, 2118, 1, 2103, 2103, 2119, 2103, 2107, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 1, 2103, 2120, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2110, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2112, 2111, 2111, 2113, 2114, 2114, 2114, 2115, 1, 2121, 1, 2116, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2116, 1, 2122, 1, 1, 1, 2123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2122, 2124, 2125, 2124, 2124, 2124, 2124, 2124, 2126, 1, 2124, 2124, 1, 2124, 2127, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 2124, 2128, 2124, 2129, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2131, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2133, 2132, 2132, 2134, 2135, 2135, 2135, 2136, 1, 2137, 1, 1, 1, 2138, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2137, 1, 1, 1, 1, 1, 1, 1, 2139, 1, 1, 1, 1, 1, 2140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2142, 1, 2143, 1, 2137, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2137, 1, 2144, 1, 1, 1, 2145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2144, 1, 1, 1, 1, 1, 1, 1, 2146, 1, 1, 1, 1, 1, 2147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 2149, 1, 2140, 1, 1, 1, 2150, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2140, 2151, 2152, 2151, 2151, 2151, 2151, 2151, 2153, 1, 2151, 2151, 1, 2151, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 1, 2151, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2155, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2157, 2156, 2156, 2158, 2159, 2159, 2159, 2160, 1, 2161, 1, 2140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2140, 1, 2162, 1, 1, 1, 2163, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2162, 2151, 1, 2151, 2151, 2151, 2151, 2151, 2164, 1, 2151, 2151, 1, 2151, 2140, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 2141, 2151, 2165, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2155, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2157, 2156, 2156, 2158, 2159, 2159, 2159, 2160, 1, 2162, 1, 1, 1, 2163, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2162, 1, 1, 1, 1, 1, 1, 1, 2164, 1, 1, 1, 1, 1, 2140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2165, 1, 2166, 1, 2162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2162, 1, 2167, 1, 1, 1, 2168, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2167, 1, 1, 1, 1, 1, 1, 1, 2169, 1, 1, 1, 1, 1, 2147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 2170, 1, 2141, 1, 1, 1, 2171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 1, 1, 1, 1, 1, 1, 2172, 1, 1, 1, 2173, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2174, 1, 2175, 1, 2141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2148, 1, 1, 1, 2176, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 1, 1, 1, 1, 1, 1, 2177, 1, 1, 1, 2178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2179, 1, 2180, 1, 183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 1, 2181, 1, 1, 1, 2182, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2181, 2183, 2184, 2183, 2183, 2183, 2183, 2183, 2185, 1, 2183, 2183, 1, 2183, 2186, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 1, 1, 1, 2183, 1, 2183, 1, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2187, 1, 1, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2189, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2191, 2190, 2190, 2192, 2193, 2193, 2193, 2194, 1, 2195, 1, 1, 1, 2196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2195, 2197, 2198, 2197, 2197, 2197, 2197, 2197, 2199, 1, 2197, 2197, 1, 2197, 2200, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 2197, 1, 2197, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2201, 1, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2205, 2204, 2204, 2206, 2207, 2207, 2207, 2208, 1, 2209, 1, 2195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2195, 1, 2210, 1, 1, 1, 2211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2210, 2197, 2198, 2197, 2197, 2197, 2197, 2197, 2212, 1, 2197, 2197, 1, 2197, 2213, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 2197, 2214, 2197, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2205, 2204, 2204, 2206, 2207, 2207, 2207, 2208, 1, 2210, 1, 1, 1, 2211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2210, 1, 1, 1, 1, 1, 1, 1, 2212, 1, 1, 1, 1, 1, 2215, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2214, 1, 2216, 1, 2210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2210, 1, 2217, 1, 1, 1, 2218, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2217, 1, 1, 1, 1, 1, 1, 1, 2219, 1, 1, 1, 1, 1, 2220, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2221, 1, 2215, 1, 1, 1, 2222, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2215, 2223, 1, 2223, 2223, 2223, 2223, 2223, 2224, 1, 2223, 2223, 1, 2223, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 2223, 1, 2223, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2226, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2228, 2227, 2227, 2229, 2230, 2230, 2230, 2231, 1, 2232, 1, 2215, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2215, 1, 2210, 1, 1, 1, 2211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2210, 2223, 1, 2223, 2223, 2223, 2223, 2223, 2212, 1, 2223, 2223, 1, 2223, 2215, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 2223, 2214, 2223, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2226, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2228, 2227, 2227, 2229, 2230, 2230, 2230, 2231, 1, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 1, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 1, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 1, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 2225, 1, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 1, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 1, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 2227, 1, 2220, 1, 1, 1, 2233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2220, 2234, 1, 2234, 2234, 2234, 2234, 2234, 2235, 1, 2234, 2234, 1, 2234, 1, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 1, 1, 1, 2234, 1, 2234, 1, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 1, 1, 1, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2237, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2239, 2238, 2238, 2240, 2241, 2241, 2241, 2242, 1, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2198, 1, 2243, 2243, 2244, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2198, 2243, 1, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2245, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2249, 2248, 2248, 2250, 2251, 2251, 2251, 2252, 1, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1, 2243, 2243, 2253, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2254, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2245, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2249, 2248, 2248, 2250, 2251, 2251, 2251, 2252, 1, 2255, 1, 2243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2243, 1, 2256, 1, 1, 1, 2257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2256, 2254, 2198, 2254, 2254, 2254, 2254, 2254, 2258, 1, 2254, 2254, 1, 2254, 2200, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 2254, 2214, 2254, 1, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2260, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2262, 2261, 2261, 2263, 2264, 2264, 2264, 2265, 1, 2256, 1, 1, 1, 2257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2256, 1, 1, 1, 1, 1, 1, 1, 2258, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2214, 1, 2266, 1, 2256, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2256, 1, 2267, 1, 1, 1, 2268, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2267, 1, 1, 1, 1, 1, 1, 1, 2269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2221, 1, 2254, 2198, 2254, 2254, 2254, 2254, 2254, 1, 1, 2254, 2254, 1, 2254, 2200, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 2254, 1, 2254, 1, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2260, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2262, 2261, 2261, 2263, 2264, 2264, 2264, 2265, 1, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 1, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 1, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 1, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259, 1, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2249, 2248, 2248, 2250, 2251, 2251, 2251, 2252, 1, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 1, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246, 1, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 1, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 1, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248, 1, 2270, 1, 2198, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2198, 1, 2215, 1, 1, 1, 2222, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2215, 2197, 2198, 2197, 2197, 2197, 2197, 2197, 2224, 1, 2197, 2197, 1, 2197, 2200, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 2197, 1, 2197, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2205, 2204, 2204, 2206, 2207, 2207, 2207, 2208, 1, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 1, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 1, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1, 2271, 1, 1, 1, 2272, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2271, 2273, 2274, 2273, 2273, 2273, 2273, 2273, 2275, 1, 2273, 2273, 1, 2273, 2276, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 1, 1, 1, 2273, 1, 2273, 1, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2277, 1, 1, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2279, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2281, 2280, 2280, 2282, 2283, 2283, 2283, 2284, 1, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 1, 2201, 2201, 2285, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 1, 2286, 2256, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2288, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2290, 2289, 2289, 2291, 2292, 2292, 2292, 2293, 1, 2294, 1, 2201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2201, 1, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2288, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2290, 2289, 2289, 2291, 2292, 2292, 2292, 2293, 1, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 1, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 1, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 1, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 1, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 1, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 1, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 1, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 1, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 1, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 1, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 1, 2295, 2295, 2296, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2297, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2298, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2300, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2302, 2301, 2301, 2303, 2304, 2304, 2304, 2305, 1, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 1, 2306, 2306, 2307, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2308, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2309, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2311, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2313, 2312, 2312, 2314, 2315, 2315, 2315, 2316, 1, 2317, 1, 2306, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2306, 1, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2311, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2313, 2312, 2312, 2314, 2315, 2315, 2315, 2316, 1, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 2306, 1, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 1, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 1, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 1, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 1, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 1, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 1, 2147, 1, 1, 1, 2318, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2147, 2319, 2320, 2319, 2319, 2319, 2319, 2319, 2321, 1, 2319, 2319, 1, 2319, 1, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 2319, 1, 2319, 1, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2323, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2325, 2324, 2324, 2326, 2327, 2327, 2327, 2328, 1, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2125, 1, 2329, 2329, 2330, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2125, 2329, 1, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2331, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2333, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2335, 2334, 2334, 2336, 2337, 2337, 2337, 2338, 1, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 1, 2329, 2329, 2339, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2340, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2331, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2333, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2335, 2334, 2334, 2336, 2337, 2337, 2337, 2338, 1, 2341, 1, 2329, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2329, 1, 2342, 1, 1, 1, 2343, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2342, 2340, 2125, 2340, 2340, 2340, 2340, 2340, 2344, 1, 2340, 2340, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2128, 2340, 2129, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2346, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2348, 2347, 2347, 2349, 2350, 2350, 2350, 2351, 1, 2352, 1, 1, 1, 2353, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2352, 1, 1, 1, 1, 1, 1, 1, 2354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2142, 1, 2355, 1, 2352, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2352, 1, 2356, 1, 1, 1, 2357, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2356, 1, 1, 1, 1, 1, 1, 1, 2358, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 2149, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 1, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 1, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 1, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 1, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2333, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2335, 2334, 2334, 2336, 2337, 2337, 2337, 2338, 1, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 1, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 1, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 1, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 1, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 2334, 1, 2359, 1, 2125, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2125, 1, 2360, 1, 1, 1, 2361, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2360, 2124, 2362, 2124, 2124, 2124, 2124, 2124, 2363, 1, 2124, 2124, 1, 2124, 2340, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 2124, 2128, 2124, 2129, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2131, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2133, 2132, 2132, 2134, 2135, 2135, 2135, 2136, 1, 2364, 1, 1, 1, 2365, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2364, 2151, 2152, 2151, 2151, 2151, 2151, 2151, 2366, 1, 2151, 2151, 1, 2151, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 2141, 2151, 2142, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2155, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2157, 2156, 2156, 2158, 2159, 2159, 2159, 2160, 1, 2367, 1, 2364, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2364, 1, 2368, 1, 1, 1, 2369, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2368, 2319, 2320, 2319, 2319, 2319, 2319, 2319, 2370, 1, 2319, 2319, 1, 2319, 1, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 2319, 2148, 2319, 2149, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2323, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2325, 2324, 2324, 2326, 2327, 2327, 2327, 2328, 1, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2372, 1, 2371, 2371, 2373, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2372, 2371, 2297, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2374, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2376, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2378, 2377, 2377, 2379, 2380, 2380, 2380, 2381, 1, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 1, 2382, 2382, 2383, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2384, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2385, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2387, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2389, 2388, 2388, 2390, 2391, 2391, 2391, 2392, 1, 2393, 1, 2382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2382, 1, 2122, 1, 1, 1, 2123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2122, 2340, 2125, 2340, 2340, 2340, 2340, 2340, 2126, 1, 2340, 2340, 1, 2340, 2127, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2128, 2340, 2129, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2346, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2348, 2347, 2347, 2349, 2350, 2350, 2350, 2351, 1, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2387, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2389, 2388, 2388, 2390, 2391, 2391, 2391, 2392, 1, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 1, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 1, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 1, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 1, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2394, 1, 2382, 2382, 2395, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2394, 2382, 2308, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2385, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2387, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2389, 2388, 2388, 2390, 2391, 2391, 2391, 2392, 1, 2396, 1, 2394, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2394, 1, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 1, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 1, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 1, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 1, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 1, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 1, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2398, 1, 2397, 2397, 2399, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2398, 2397, 2400, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2401, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2403, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2405, 2404, 2404, 2406, 2407, 2407, 2407, 2408, 1, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 2409, 2409, 2410, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2411, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2412, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2414, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2416, 2415, 2415, 2417, 2418, 2418, 2418, 2419, 1, 2420, 1, 2409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2409, 1, 2421, 1, 1, 1, 2422, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2421, 2340, 2125, 2340, 2340, 2340, 2340, 2340, 2423, 1, 2340, 2340, 1, 2340, 2127, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2128, 2340, 2424, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2346, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2348, 2347, 2347, 2349, 2350, 2350, 2350, 2351, 1, 2425, 1, 1, 1, 2426, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2425, 1, 1, 1, 1, 1, 1, 1, 2427, 1, 1, 1, 1, 1, 2140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2428, 1, 2429, 1, 2425, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2425, 1, 2430, 1, 1, 1, 2431, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2430, 1, 1, 1, 1, 1, 1, 1, 2432, 1, 1, 1, 1, 1, 2147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 2433, 1, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2414, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2416, 2415, 2415, 2417, 2418, 2418, 2418, 2419, 1, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 1, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 1, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 1, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 1, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2434, 1, 2409, 2409, 2435, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2434, 2409, 2436, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2412, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2414, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2416, 2415, 2415, 2417, 2418, 2418, 2418, 2419, 1, 2437, 1, 2434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2434, 1, 2438, 1, 1, 1, 2439, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2438, 1, 1, 1, 1, 1, 1, 1, 2440, 1, 1, 1, 1, 1, 2140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2141, 1, 2441, 1, 2442, 1, 2438, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2438, 1, 2443, 1, 1, 1, 2444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2443, 1, 1, 1, 1, 1, 1, 1, 2445, 1, 1, 1, 1, 1, 2147, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2148, 1, 2446, 1, 2447, 1, 1, 1, 2448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2447, 2449, 2450, 2449, 2449, 2449, 2449, 2449, 2451, 1, 2449, 2449, 2452, 2449, 2453, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 2449, 1, 2449, 2454, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2456, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2458, 2457, 2457, 2459, 2460, 2460, 2460, 2461, 1, 2119, 1, 1, 1, 2462, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2119, 1, 1, 1, 1, 1, 1, 1, 2463, 1, 1, 1, 2119, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2120, 1, 2464, 1, 2119, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2119, 1, 2452, 1, 1, 1, 2465, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2452, 1, 1, 1, 1, 1, 1, 1, 2466, 1, 1, 1, 2452, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2454, 1, 2467, 1, 1, 1, 2468, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2467, 2469, 2470, 2469, 2469, 2469, 2469, 2469, 2471, 1, 2469, 2469, 1, 2469, 2472, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 1, 1, 1, 2469, 1, 2469, 1, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2473, 1, 1, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2475, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, 2476, 2476, 2478, 2479, 2479, 2479, 2480, 1, 2481, 1, 1, 1, 2482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2481, 2483, 2484, 2483, 2483, 2483, 2483, 2483, 2485, 1, 2483, 2483, 1, 2483, 2486, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 2483, 1, 2483, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2487, 1, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2489, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2491, 2490, 2490, 2492, 2493, 2493, 2493, 2494, 1, 2495, 1, 2481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2481, 1, 2496, 1, 1, 1, 2497, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2496, 2483, 2484, 2483, 2483, 2483, 2483, 2483, 2498, 1, 2483, 2483, 2499, 2483, 2500, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2501, 1, 1, 2483, 1, 2483, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2489, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2491, 2490, 2490, 2492, 2493, 2493, 2493, 2494, 1, 2496, 1, 1, 1, 2497, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2496, 1, 1, 1, 1, 1, 1, 1, 2498, 1, 1, 1, 2499, 1, 2502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2501, 1, 2503, 1, 2496, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2496, 1, 2504, 1, 1, 1, 2505, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2504, 1, 1, 1, 1, 1, 1, 1, 2506, 1, 1, 1, 2507, 1, 2508, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2509, 1, 2510, 1, 1, 1, 2511, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2510, 1, 1, 1, 1, 1, 1, 1, 2512, 1, 1, 1, 2510, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2513, 1, 1, 1, 1, 1, 2120, 1, 2514, 1, 2510, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2510, 1, 2515, 1, 1, 1, 2516, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2515, 1, 1, 1, 1, 1, 1, 1, 2517, 1, 1, 1, 2515, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2518, 1, 1, 1, 1, 1, 2454, 1, 2519, 1, 1, 1, 2520, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2519, 2521, 2522, 2521, 2521, 2521, 2521, 2521, 2523, 1, 2521, 2521, 1, 2521, 2524, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 1, 1, 1, 2521, 1, 2521, 1, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 1, 1, 1, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2526, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2528, 2527, 2527, 2529, 2530, 2530, 2530, 2531, 1, 2532, 1, 1, 1, 2533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2532, 2103, 2104, 2103, 2103, 2103, 2103, 2103, 2534, 1, 2103, 2103, 1, 2103, 2107, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 1, 2103, 1, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2110, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2112, 2111, 2111, 2113, 2114, 2114, 2114, 2115, 1, 2535, 1, 2532, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2532, 1, 2536, 1, 1, 1, 2537, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2536, 2449, 2450, 2449, 2449, 2449, 2449, 2449, 2538, 1, 2449, 2449, 1, 2449, 2453, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 2449, 1, 2449, 1, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2456, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2458, 2457, 2457, 2459, 2460, 2460, 2460, 2461, 1, 2340, 2125, 2340, 2340, 2340, 2340, 2340, 1, 1, 2340, 2340, 1, 2340, 2539, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 1, 2340, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2346, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2347, 2348, 2347, 2347, 2349, 2350, 2350, 2350, 2351, 1, 2502, 1, 1, 1, 2540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2502, 2541, 1, 2541, 2541, 2541, 2541, 2541, 2542, 1, 2541, 2541, 1, 2541, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 1, 1, 2541, 1, 2541, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 1, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2544, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2546, 2545, 2545, 2547, 2548, 2548, 2548, 2549, 1, 2550, 1, 2502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2502, 1, 2496, 1, 1, 1, 2497, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2496, 2541, 1, 2541, 2541, 2541, 2541, 2541, 2498, 1, 2541, 2541, 2499, 2541, 2502, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2501, 1, 1, 2541, 1, 2541, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 1, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2544, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2546, 2545, 2545, 2547, 2548, 2548, 2548, 2549, 1, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 1, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 1, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 1, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 1, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2508, 1, 1, 1, 2551, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2508, 2552, 1, 2552, 2552, 2552, 2552, 2552, 2553, 1, 2552, 2552, 1, 2552, 1, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 1, 1, 1, 2552, 1, 2552, 1, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 1, 1, 1, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2555, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2557, 2556, 2556, 2558, 2559, 2559, 2559, 2560, 1, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2484, 1, 2561, 2561, 2562, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2484, 2561, 1, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2563, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2565, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2567, 2566, 2566, 2568, 2569, 2569, 2569, 2570, 1, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 1, 2561, 2561, 2571, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2572, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2563, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2565, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2567, 2566, 2566, 2568, 2569, 2569, 2569, 2570, 1, 2573, 1, 2561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2561, 1, 2574, 1, 1, 1, 2575, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2574, 2572, 2484, 2572, 2572, 2572, 2572, 2572, 2576, 1, 2572, 2572, 2499, 2572, 2486, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2501, 1, 1, 2572, 1, 2572, 1, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 1, 1, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2578, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2580, 2579, 2579, 2581, 2582, 2582, 2582, 2583, 1, 2574, 1, 1, 1, 2575, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2574, 1, 1, 1, 1, 1, 1, 1, 2576, 1, 1, 1, 2499, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2501, 1, 2584, 1, 2574, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2574, 1, 2585, 1, 1, 1, 2586, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2585, 1, 1, 1, 1, 1, 1, 1, 2587, 1, 1, 1, 2507, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2509, 1, 2572, 2484, 2572, 2572, 2572, 2572, 2572, 1, 1, 2572, 2572, 1, 2572, 2486, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 1, 1, 2572, 1, 2572, 1, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 1, 1, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2578, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2580, 2579, 2579, 2581, 2582, 2582, 2582, 2583, 1, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 2572, 1, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 1, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 1, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 1, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 1, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 1, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 1, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2565, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2567, 2566, 2566, 2568, 2569, 2569, 2569, 2570, 1, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2561, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 1, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 1, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 1, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 1, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 1, 2588, 1, 2484, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2484, 1, 2502, 1, 1, 1, 2540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2502, 2483, 2484, 2483, 2483, 2483, 2483, 2483, 2542, 1, 2483, 2483, 1, 2483, 2486, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 2483, 1, 2483, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2489, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2491, 2490, 2490, 2492, 2493, 2493, 2493, 2494, 1, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 1, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488, 1, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1, 2589, 1, 1, 1, 2590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2589, 2591, 2592, 2591, 2591, 2591, 2591, 2591, 2593, 1, 2591, 2591, 1, 2591, 2594, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 1, 1, 1, 2591, 1, 2591, 1, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2595, 1, 1, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 2591, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2597, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2599, 2598, 2598, 2600, 2601, 2601, 2601, 2602, 1, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 1, 2487, 2487, 2603, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 1, 2604, 2574, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2606, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2608, 2607, 2607, 2609, 2610, 2610, 2610, 2611, 1, 2612, 1, 2487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2487, 1, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2606, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2608, 2607, 2607, 2609, 2610, 2610, 2610, 2611, 1, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 1, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 1, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 1, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 1, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 1, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 1, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 1, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 1, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 1, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 1, 2613, 1, 1, 1, 2614, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2613, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2615, 1, 2078, 2078, 2616, 2078, 2617, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2618, 2082, 2078, 1, 2078, 2619, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2620, 1, 1, 1, 2621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2620, 2622, 2623, 2622, 2622, 2622, 2622, 2622, 2624, 1, 2622, 2622, 1, 2622, 2051, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 2021, 2622, 1, 2622, 2051, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2626, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, 2627, 2627, 2629, 2630, 2630, 2630, 2631, 1, 2632, 1, 1, 1, 2633, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2632, 2622, 2623, 2622, 2622, 2622, 2622, 2622, 2634, 1, 2622, 2622, 1, 2622, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 2004, 2622, 1, 2622, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2626, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, 2627, 2627, 2629, 2630, 2630, 2630, 2631, 1, 2635, 1, 2632, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2632, 1, 2636, 1, 1, 1, 2637, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2636, 2622, 2033, 2622, 2622, 2622, 2622, 2622, 2638, 1, 2622, 2622, 2173, 2622, 2036, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 2174, 2021, 2622, 1, 2622, 2639, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2626, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, 2627, 2627, 2629, 2630, 2630, 2630, 2631, 1, 2636, 1, 1, 1, 2637, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2636, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2638, 1, 2032, 2032, 2173, 2032, 2036, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2174, 2021, 2032, 1, 2032, 2639, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2640, 1, 2641, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2641, 1, 2642, 1, 1, 1, 2643, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2642, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2644, 1, 2078, 2078, 2178, 2078, 2617, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2179, 2082, 2078, 1, 2078, 2645, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2646, 1, 1, 1, 2647, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2646, 2648, 2649, 2648, 2648, 2648, 2648, 2648, 2650, 1, 2648, 2648, 1, 2648, 2651, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 1, 1, 2021, 2648, 1, 2648, 2051, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2652, 1, 1, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2654, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2656, 2655, 2655, 2657, 2658, 2658, 2658, 2659, 1, 2660, 1, 1, 1, 2661, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2660, 2662, 2663, 2662, 2662, 2662, 2662, 2662, 2664, 1, 2662, 2662, 1, 2662, 2665, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 2004, 2662, 1, 2662, 1, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2666, 1, 1, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2668, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2670, 2669, 2669, 2671, 2672, 2672, 2672, 2673, 1, 2674, 1, 2660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2660, 1, 2675, 1, 1, 1, 2676, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2675, 2662, 2663, 2662, 2662, 2662, 2662, 2662, 2677, 1, 2662, 2662, 2678, 2662, 2679, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 2680, 2021, 2662, 1, 2662, 2051, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 1, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2668, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2670, 2669, 2669, 2671, 2672, 2672, 2672, 2673, 1, 2675, 1, 1, 1, 2676, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2675, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2677, 1, 2032, 2032, 2678, 2032, 2681, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2680, 2021, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2682, 1, 2683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2683, 1, 2684, 1, 1, 1, 2685, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2684, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2686, 1, 2078, 2078, 2687, 2078, 2688, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2689, 2082, 2078, 1, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2690, 1, 1, 1, 2691, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2690, 2692, 2033, 2692, 2692, 2692, 2692, 2692, 2693, 1, 2692, 2692, 1, 2692, 2051, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 2021, 2692, 1, 2692, 2051, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2695, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2697, 2696, 2696, 2698, 2699, 2699, 2699, 2700, 1, 2701, 1, 1, 1, 2702, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2701, 2692, 2033, 2692, 2692, 2692, 2692, 2692, 2703, 1, 2692, 2692, 1, 2692, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 2004, 2692, 1, 2692, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2695, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2697, 2696, 2696, 2698, 2699, 2699, 2699, 2700, 1, 2704, 1, 2701, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2701, 1, 2675, 1, 1, 1, 2676, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2675, 2692, 2033, 2692, 2692, 2692, 2692, 2692, 2677, 1, 2692, 2692, 2678, 2692, 2681, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 2680, 2021, 2692, 1, 2692, 2051, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2695, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2697, 2696, 2696, 2698, 2699, 2699, 2699, 2700, 1, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 1, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 1, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 1, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 1, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696, 1, 2705, 1, 1, 1, 2706, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2705, 2707, 2079, 2707, 2707, 2707, 2707, 2707, 2708, 1, 2707, 2707, 1, 2707, 1, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 1, 1, 2100, 2707, 1, 2707, 1, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 1, 1, 1, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2710, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2712, 2711, 2711, 2713, 2714, 2714, 2714, 2715, 1, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2717, 1, 2716, 2716, 2718, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2717, 2716, 2055, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2719, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2721, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2723, 2722, 2722, 2724, 2725, 2725, 2725, 2726, 1, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 1, 2727, 2727, 2728, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2729, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2730, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2732, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2734, 2733, 2733, 2735, 2736, 2736, 2736, 2737, 1, 2738, 1, 2727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2727, 1, 2739, 1, 1, 1, 2740, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2739, 2741, 2663, 2741, 2741, 2741, 2741, 2741, 2742, 1, 2741, 2741, 2678, 2741, 2743, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 2680, 2021, 2741, 1, 2741, 2051, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 1, 1, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2745, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2747, 2746, 2746, 2748, 2749, 2749, 2749, 2750, 1, 2739, 1, 1, 1, 2740, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2739, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2742, 1, 2032, 2032, 2678, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2680, 2021, 2032, 1, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2751, 1, 2752, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2752, 1, 2753, 1, 1, 1, 2754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2753, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2755, 1, 2078, 2078, 2687, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2689, 2082, 2078, 1, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2090, 1, 1, 1, 2091, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2090, 2741, 2663, 2741, 2741, 2741, 2741, 2741, 2092, 1, 2741, 2741, 1, 2741, 2743, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 1, 2021, 2741, 1, 2741, 2051, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 1, 1, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2745, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2747, 2746, 2746, 2748, 2749, 2749, 2749, 2750, 1, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 1, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 1, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 1, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744, 1, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 1, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 1, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 1, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2732, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2734, 2733, 2733, 2735, 2736, 2736, 2736, 2737, 1, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 1, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 1, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 1, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 1, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2756, 1, 2727, 2727, 2757, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2756, 2727, 2066, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2730, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2732, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2734, 2733, 2733, 2735, 2736, 2736, 2736, 2737, 1, 2758, 1, 2756, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2756, 1, 2690, 1, 1, 1, 2691, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2690, 2662, 2663, 2662, 2662, 2662, 2662, 2662, 2693, 1, 2662, 2662, 1, 2662, 2743, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 2021, 2662, 1, 2662, 2051, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 1, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2668, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2670, 2669, 2669, 2671, 2672, 2672, 2672, 2673, 1, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 2662, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 1, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667, 1, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 1, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 1, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 1, 2759, 1, 1, 1, 2760, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2759, 2761, 2762, 2761, 2761, 2761, 2761, 2761, 2763, 1, 2761, 2761, 1, 2761, 2764, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 1, 1, 2100, 2761, 1, 2761, 1, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2765, 1, 1, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 2761, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2767, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2768, 2769, 2768, 2768, 2770, 2771, 2771, 2771, 2772, 1, 2773, 2774, 2773, 2773, 2773, 2773, 2773, 1, 1, 2773, 2773, 1, 2773, 2665, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 1, 1, 2773, 1, 2773, 1, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 1, 1, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2776, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2778, 2777, 2777, 2779, 2780, 2780, 2780, 2781, 1, 2782, 1, 1, 1, 2783, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2782, 2773, 2774, 2773, 2773, 2773, 2773, 2773, 2784, 1, 2773, 2773, 2678, 2773, 2665, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 2680, 1, 2773, 1, 2773, 1, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 1, 1, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2776, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2778, 2777, 2777, 2779, 2780, 2780, 2780, 2781, 1, 2782, 1, 1, 1, 2783, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2782, 1, 1, 1, 1, 1, 1, 1, 2784, 1, 1, 1, 2678, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2680, 1, 2785, 1, 2782, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2782, 1, 2786, 1, 1, 1, 2787, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2786, 1, 1, 1, 1, 1, 1, 1, 2788, 1, 1, 1, 2687, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2689, 1, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2774, 1, 2789, 2789, 2790, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2774, 2789, 1, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2791, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2793, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2795, 2794, 2794, 2796, 2797, 2797, 2797, 2798, 1, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 1, 2789, 2789, 2799, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2773, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2791, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2793, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2795, 2794, 2794, 2796, 2797, 2797, 2797, 2798, 1, 2800, 1, 2789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2789, 1, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2793, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2795, 2794, 2794, 2796, 2797, 2797, 2797, 2798, 1, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 1, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 1, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 1, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 1, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 1, 2801, 1, 2774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2774, 1, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 1, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 1, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 1, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 1, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 1, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 1, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2777, 1, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 1, 2666, 2666, 2802, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 1, 2803, 2782, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2805, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2807, 2806, 2806, 2808, 2809, 2809, 2809, 2810, 1, 2811, 1, 2666, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2666, 1, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2805, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2807, 2806, 2806, 2808, 2809, 2809, 2809, 2810, 1, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 1, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 1, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 1, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 1, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 1, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 1, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 1, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 1, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 1, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 1, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 1, 2812, 2812, 2813, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2814, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2815, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2817, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2819, 2818, 2818, 2820, 2821, 2821, 2821, 2822, 1, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 1, 2823, 2823, 2824, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2825, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2826, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2828, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2830, 2829, 2829, 2831, 2832, 2832, 2832, 2833, 1, 2834, 1, 2823, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2823, 1, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2828, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2830, 2829, 2829, 2831, 2832, 2832, 2832, 2833, 1, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 1, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 1, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 1, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 1, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 1, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 1, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 1, 2835, 1, 1, 1, 2836, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2835, 2837, 2838, 2837, 2837, 2837, 2837, 2837, 2839, 1, 2837, 2837, 1, 2837, 1, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 1, 2100, 2837, 1, 2837, 1, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 1, 1, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2841, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2843, 2842, 2842, 2844, 2845, 2845, 2845, 2846, 1, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2848, 1, 2847, 2847, 2849, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2848, 2847, 2055, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2850, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2852, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2853, 2854, 2853, 2853, 2855, 2856, 2856, 2856, 2857, 1, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 1, 2858, 2858, 2859, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2860, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2861, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2863, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2865, 2864, 2864, 2866, 2867, 2867, 2867, 2868, 1, 2869, 1, 2858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2858, 1, 2870, 1, 1, 1, 2871, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2870, 2872, 2016, 2872, 2872, 2872, 2872, 2872, 2873, 1, 2872, 2872, 2018, 2872, 2874, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 2020, 2021, 2872, 1, 2872, 2022, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2878, 2877, 2877, 2879, 2880, 2880, 2880, 2881, 1, 2882, 1, 1, 1, 2883, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2882, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2884, 1, 2032, 2032, 2035, 2032, 2051, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2037, 2021, 2032, 1, 2032, 2038, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2885, 1, 2886, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2886, 1, 2887, 1, 1, 1, 2888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2887, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2889, 1, 2078, 2078, 2616, 2078, 2081, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2618, 2082, 2078, 1, 2078, 2619, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2890, 1, 1, 1, 2891, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2890, 2872, 2016, 2872, 2872, 2872, 2872, 2872, 2892, 1, 2872, 2872, 2018, 2872, 2874, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 2020, 2021, 2872, 1, 2872, 2022, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2878, 2877, 2877, 2879, 2880, 2880, 2880, 2881, 1, 2893, 1, 1, 1, 2894, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2893, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 2895, 1, 2032, 2032, 2035, 2032, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 2037, 2004, 2032, 1, 2032, 2896, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 2897, 1, 2893, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2893, 1, 2898, 1, 1, 1, 2899, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2898, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2900, 1, 2078, 2078, 2616, 2078, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 2618, 2100, 2078, 1, 2078, 2901, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 2902, 1, 1, 1, 2903, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2902, 2904, 2905, 2904, 2904, 2904, 2904, 2904, 2906, 1, 2904, 2904, 1, 2904, 2907, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 1, 1, 1, 2904, 1, 2904, 1, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2652, 1, 1, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2909, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2911, 2910, 2910, 2912, 2913, 2913, 2913, 2914, 1, 2915, 1, 1, 1, 2916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2915, 2917, 2774, 2917, 2917, 2917, 2917, 2917, 2918, 1, 2917, 2917, 1, 2917, 2665, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 2917, 1, 2917, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2666, 1, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2920, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2922, 2921, 2921, 2923, 2924, 2924, 2924, 2925, 1, 2926, 1, 2915, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2915, 1, 2927, 1, 1, 1, 2928, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2927, 2917, 2774, 2917, 2917, 2917, 2917, 2917, 2929, 1, 2917, 2917, 2678, 2917, 2930, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 2680, 1, 2917, 1, 2917, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2920, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2922, 2921, 2921, 2923, 2924, 2924, 2924, 2925, 1, 2927, 1, 1, 1, 2928, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2927, 1, 1, 1, 1, 1, 1, 1, 2929, 1, 1, 1, 2678, 1, 2931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2680, 1, 2932, 1, 2927, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2927, 1, 2933, 1, 1, 1, 2934, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2933, 1, 1, 1, 1, 1, 1, 1, 2935, 1, 1, 1, 2687, 1, 2936, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2689, 1, 2931, 1, 1, 1, 2937, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2931, 2938, 1, 2938, 2938, 2938, 2938, 2938, 2939, 1, 2938, 2938, 1, 2938, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 1, 1, 2938, 1, 2938, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 1, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2941, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2943, 2942, 2942, 2944, 2945, 2945, 2945, 2946, 1, 2947, 1, 2931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2931, 1, 2927, 1, 1, 1, 2928, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2927, 2938, 1, 2938, 2938, 2938, 2938, 2938, 2929, 1, 2938, 2938, 2678, 2938, 2931, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 2680, 1, 2938, 1, 2938, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 1, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2941, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2943, 2942, 2942, 2944, 2945, 2945, 2945, 2946, 1, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938, 1, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 1, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 1, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 1, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 1, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 1, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 1, 2936, 1, 1, 1, 2948, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2936, 2949, 1, 2949, 2949, 2949, 2949, 2949, 2950, 1, 2949, 2949, 1, 2949, 1, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 1, 1, 1, 2949, 1, 2949, 1, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 1, 1, 1, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 2949, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2951, 2952, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2954, 2953, 2953, 2955, 2956, 2956, 2956, 2957, 1, 2931, 1, 1, 1, 2937, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2931, 2917, 2774, 2917, 2917, 2917, 2917, 2917, 2939, 1, 2917, 2917, 1, 2917, 2665, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 2917, 1, 2917, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2920, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2922, 2921, 2921, 2923, 2924, 2924, 2924, 2925, 1, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 1, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 2919, 1, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 1, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 1, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921, 1, 2958, 1, 1, 1, 2959, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2958, 2960, 2961, 2960, 2960, 2960, 2960, 2960, 2962, 1, 2960, 2960, 1, 2960, 2764, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 1, 1, 1, 2960, 1, 2960, 1, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2765, 1, 1, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2964, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2965, 2966, 2965, 2965, 2967, 2968, 2968, 2968, 2969, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 1, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 1, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 1, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 1, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2863, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2865, 2864, 2864, 2866, 2867, 2867, 2867, 2868, 1, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 1, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 1, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 1, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 1, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2970, 1, 2858, 2858, 2971, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2970, 2858, 2066, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2861, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2863, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2865, 2864, 2864, 2866, 2867, 2867, 2867, 2868, 1, 2972, 1, 2970, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2970, 1, 2973, 1, 1, 1, 2974, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2973, 2015, 2975, 2015, 2015, 2015, 2015, 2015, 2976, 1, 2015, 2015, 2018, 2015, 2874, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 2020, 2021, 2015, 1, 2015, 2022, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 1, 1, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2024, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2026, 2025, 2025, 2027, 2028, 2028, 2028, 2029, 1, 2977, 1, 1, 1, 2978, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2977, 2622, 2623, 2622, 2622, 2622, 2622, 2622, 2979, 1, 2622, 2622, 2035, 2622, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 2037, 2004, 2622, 1, 2622, 2896, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2626, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, 2627, 2627, 2629, 2630, 2630, 2630, 2631, 1, 2980, 1, 2977, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2977, 1, 2981, 1, 1, 1, 2982, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2981, 2837, 2838, 2837, 2837, 2837, 2837, 2837, 2983, 1, 2837, 2837, 2616, 2837, 1, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 2618, 2100, 2837, 1, 2837, 2901, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 1, 1, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2841, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2843, 2842, 2842, 2844, 2845, 2845, 2845, 2846, 1, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2985, 1, 2984, 2984, 2986, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2985, 2984, 2814, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2987, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2989, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2991, 2990, 2990, 2992, 2993, 2993, 2993, 2994, 1, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 1, 2995, 2995, 2996, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2997, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2998, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3002, 3001, 3001, 3003, 3004, 3004, 3004, 3005, 1, 3006, 1, 2995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2995, 1, 2013, 1, 1, 1, 2014, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2013, 2872, 2016, 2872, 2872, 2872, 2872, 2872, 2017, 1, 2872, 2872, 2018, 2872, 2019, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 2020, 2021, 2872, 1, 2872, 2022, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2878, 2877, 2877, 2879, 2880, 2880, 2880, 2881, 1, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3002, 3001, 3001, 3003, 3004, 3004, 3004, 3005, 1, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 1, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 1, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 1, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 1, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 3007, 1, 2995, 2995, 3008, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 3007, 2995, 2825, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2998, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3001, 3002, 3001, 3001, 3003, 3004, 3004, 3004, 3005, 1, 3009, 1, 3007, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3007, 1, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 1, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 1, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 1, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 1, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 1, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 1, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 1, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3011, 1, 3010, 3010, 3012, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3011, 3010, 3013, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3014, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3016, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3018, 3017, 3017, 3019, 3020, 3020, 3020, 3021, 1, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 1, 3022, 3022, 3023, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3024, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3025, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3027, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3029, 3028, 3028, 3030, 3031, 3031, 3031, 3032, 1, 3033, 1, 3022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3022, 1, 3034, 1, 1, 1, 3035, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3034, 2872, 2016, 2872, 2872, 2872, 2872, 2872, 3036, 1, 2872, 2872, 3037, 2872, 2019, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 3038, 2021, 2872, 1, 2872, 3039, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2878, 2877, 2877, 2879, 2880, 2880, 2880, 2881, 1, 3040, 1, 1, 1, 3041, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3040, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 3042, 1, 2032, 2032, 3043, 2032, 2036, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 3044, 2021, 2032, 1, 2032, 3045, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 3046, 1, 3047, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3047, 1, 3048, 1, 1, 1, 3049, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3048, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 3050, 1, 2078, 2078, 3051, 2078, 2617, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 3052, 2082, 2078, 1, 2078, 3053, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3027, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3029, 3028, 3028, 3030, 3031, 3031, 3031, 3032, 1, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 1, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 1, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 1, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 1, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3054, 1, 3022, 3022, 3055, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3054, 3022, 3056, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3025, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3027, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3029, 3028, 3028, 3030, 3031, 3031, 3031, 3032, 1, 3057, 1, 3054, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3054, 1, 3058, 1, 1, 1, 3059, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3058, 2032, 2033, 2032, 2032, 2032, 2032, 2032, 3060, 1, 2032, 2032, 3061, 2032, 2036, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 3062, 2021, 2032, 1, 2032, 3063, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 2041, 2041, 2043, 2044, 2044, 2044, 2045, 1, 3064, 1, 3065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3065, 1, 3066, 1, 1, 1, 3067, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3066, 2078, 2079, 2078, 2078, 2078, 2078, 2078, 3068, 1, 2078, 2078, 3069, 2078, 2617, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 3070, 2082, 2078, 1, 2078, 3071, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2086, 2085, 2085, 2087, 2088, 2088, 2088, 2089, 1, 3072, 1, 1, 1, 3073, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3072, 3074, 3075, 3074, 3074, 3074, 3074, 3074, 3076, 1, 3074, 3074, 1973, 3074, 3077, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1975, 2100, 3074, 1, 3074, 1, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1, 1, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3079, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3081, 3080, 3080, 3082, 3083, 3083, 3083, 3084, 1, 3085, 3086, 3085, 3085, 3085, 3085, 3085, 1, 1, 3085, 3085, 1, 3085, 3087, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 1, 1, 3085, 1, 3085, 1, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 1, 1, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3089, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3091, 3090, 3090, 3092, 3093, 3093, 3093, 3094, 1, 3095, 1, 1, 1, 3096, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3095, 3085, 3086, 3085, 3085, 3085, 3085, 3085, 3097, 1, 3085, 3085, 2018, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 2020, 1, 3085, 1, 3085, 3098, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 1, 1, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3089, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3091, 3090, 3090, 3092, 3093, 3093, 3093, 3094, 1, 3099, 1, 1, 1, 3100, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3099, 1, 1, 1, 1, 1, 1, 1, 3101, 1, 1, 1, 2035, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2037, 1, 1, 1, 1, 2896, 1, 3102, 1, 3099, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3099, 1, 3103, 1, 1, 1, 3104, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3103, 1, 1, 1, 1, 1, 1, 1, 3105, 1, 1, 1, 2616, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2618, 1, 1, 1, 1, 2901, 1, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3086, 1, 3106, 3106, 3107, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3086, 3106, 1, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3108, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3110, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3112, 3111, 3111, 3113, 3114, 3114, 3114, 3115, 1, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 1, 3106, 3106, 3116, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3085, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3108, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3110, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3112, 3111, 3111, 3113, 3114, 3114, 3114, 3115, 1, 3117, 1, 3106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3106, 1, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3110, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3112, 3111, 3111, 3113, 3114, 3114, 3114, 3115, 1, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 3106, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 1, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 3109, 1, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 1, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 1, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 1, 3118, 1, 3086, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3086, 1, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 1, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 1, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 1, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 1, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 1, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 1, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 3090, 1, 2090, 1, 1, 1, 2091, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2090, 2872, 2016, 2872, 2872, 2872, 2872, 2872, 2092, 1, 2872, 2872, 1, 2872, 3119, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 2021, 2872, 1, 2872, 2051, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2878, 2877, 2877, 2879, 2880, 2880, 2880, 2881, 1, 3120, 3121, 3120, 3120, 3120, 3120, 3120, 1, 1, 3120, 3120, 1, 3120, 3122, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 1, 1, 3120, 1, 3120, 1, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 1, 1, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3124, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3126, 3125, 3125, 3127, 3128, 3128, 3128, 3129, 1, 3130, 1, 1, 1, 3131, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3130, 3120, 3121, 3120, 3120, 3120, 3120, 3120, 3132, 1, 3120, 3120, 213, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 215, 1, 3120, 1, 3120, 3133, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 1, 1, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3124, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3126, 3125, 3125, 3127, 3128, 3128, 3128, 3129, 1, 3134, 1, 1, 1, 3135, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3134, 1, 1, 1, 1, 1, 1, 1, 3136, 1, 1, 1, 230, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 232, 1, 1, 1, 1, 1838, 1, 3137, 1, 3134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3134, 1, 3138, 1, 1, 1, 3139, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3138, 1, 1, 1, 1, 1, 1, 1, 3140, 1, 1, 1, 1804, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 947, 1, 1, 1, 1, 1843, 1, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3121, 1, 3141, 3141, 3142, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3121, 3141, 1, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3143, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3145, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3147, 3146, 3146, 3148, 3149, 3149, 3149, 3150, 1, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 1, 3141, 3141, 3151, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3120, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3143, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3145, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3147, 3146, 3146, 3148, 3149, 3149, 3149, 3150, 1, 3152, 1, 3141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3141, 1, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3145, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3147, 3146, 3146, 3148, 3149, 3149, 3149, 3150, 1, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 1, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 1, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 1, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 1, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 1, 3153, 1, 3121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3121, 1, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 1, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 1, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 1, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 1, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 1, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 1, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 3125, 1, 285, 1, 1, 1, 286, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 285, 409, 211, 409, 409, 409, 409, 409, 287, 1, 409, 409, 1, 409, 3154, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 216, 409, 1, 409, 246, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 416, 416, 418, 419, 419, 419, 420, 1, 3155, 1, 1, 1, 3156, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3155, 3157, 3158, 3157, 3157, 3157, 3157, 3157, 3159, 1, 3157, 3157, 1, 3157, 3160, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 1, 1, 1, 3157, 1, 3157, 1, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3161, 1, 1, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3163, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3165, 3164, 3164, 3166, 3167, 3167, 3167, 3168, 1, 3169, 1, 1, 1, 3170, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3169, 3171, 3172, 3171, 3171, 3171, 3171, 3171, 3173, 1, 3171, 3171, 1, 3171, 3174, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 3171, 1, 3171, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3175, 1, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3177, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3179, 3178, 3178, 3180, 3181, 3181, 3181, 3182, 1, 3183, 1, 3169, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3169, 1, 3184, 1, 1, 1, 3185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3184, 3171, 3172, 3171, 3171, 3171, 3171, 3171, 3186, 1, 3171, 3171, 1, 3171, 3187, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 3171, 3188, 3171, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3177, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3179, 3178, 3178, 3180, 3181, 3181, 3181, 3182, 1, 3184, 1, 1, 1, 3185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3184, 1, 1, 1, 1, 1, 1, 1, 3186, 1, 1, 1, 1, 1, 3189, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3188, 1, 3190, 1, 3184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3184, 1, 3191, 1, 1, 1, 3192, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3191, 1, 1, 1, 1, 1, 1, 1, 3193, 1, 1, 1, 1, 1, 3194, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3195, 1, 3189, 1, 1, 1, 3196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3189, 3197, 1, 3197, 3197, 3197, 3197, 3197, 3198, 1, 3197, 3197, 1, 3197, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 3197, 1, 3197, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3200, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3202, 3201, 3201, 3203, 3204, 3204, 3204, 3205, 1, 3206, 1, 3189, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3189, 1, 3184, 1, 1, 1, 3185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3184, 3197, 1, 3197, 3197, 3197, 3197, 3197, 3186, 1, 3197, 3197, 1, 3197, 3189, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 3197, 3188, 3197, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3200, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3202, 3201, 3201, 3203, 3204, 3204, 3204, 3205, 1, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 1, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 1, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 1, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199, 1, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 1, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 1, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 1, 3194, 1, 1, 1, 3207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3194, 3208, 1, 3208, 3208, 3208, 3208, 3208, 3209, 1, 3208, 3208, 1, 3208, 1, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 1, 1, 1, 3208, 1, 3208, 1, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 1, 1, 1, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3211, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3213, 3212, 3212, 3214, 3215, 3215, 3215, 3216, 1, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3172, 1, 3217, 3217, 3218, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3172, 3217, 1, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3219, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3221, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3223, 3222, 3222, 3224, 3225, 3225, 3225, 3226, 1, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 1, 3217, 3217, 3227, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3228, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3219, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3221, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3223, 3222, 3222, 3224, 3225, 3225, 3225, 3226, 1, 3229, 1, 3217, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3217, 1, 3230, 1, 1, 1, 3231, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3230, 3228, 3172, 3228, 3228, 3228, 3228, 3228, 3232, 1, 3228, 3228, 1, 3228, 3174, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 3228, 3188, 3228, 1, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3234, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3236, 3235, 3235, 3237, 3238, 3238, 3238, 3239, 1, 3230, 1, 1, 1, 3231, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3230, 1, 1, 1, 1, 1, 1, 1, 3232, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3188, 1, 3240, 1, 3230, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3230, 1, 3241, 1, 1, 1, 3242, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3241, 1, 1, 1, 1, 1, 1, 1, 3243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3195, 1, 3228, 3172, 3228, 3228, 3228, 3228, 3228, 1, 1, 3228, 3228, 1, 3228, 3174, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 3228, 1, 3228, 1, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3234, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3236, 3235, 3235, 3237, 3238, 3238, 3238, 3239, 1, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 1, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 1, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 1, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 1, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 1, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 1, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 1, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3221, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3223, 3222, 3222, 3224, 3225, 3225, 3225, 3226, 1, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 1, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 1, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 1, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 1, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 1, 3244, 1, 3172, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3172, 1, 3189, 1, 1, 1, 3196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3189, 3171, 3172, 3171, 3171, 3171, 3171, 3171, 3198, 1, 3171, 3171, 1, 3171, 3174, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 3171, 1, 3171, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3177, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3179, 3178, 3178, 3180, 3181, 3181, 3181, 3182, 1, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 1, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 1, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 1, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 1, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 1, 3245, 1, 1, 1, 3246, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3245, 3247, 3248, 3247, 3247, 3247, 3247, 3247, 3249, 1, 3247, 3247, 1, 3247, 3250, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 1, 1, 1, 3247, 1, 3247, 1, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3251, 1, 1, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, 3254, 3254, 3256, 3257, 3257, 3257, 3258, 1, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 1, 3175, 3175, 3259, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 1, 3260, 3230, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3262, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3264, 3263, 3263, 3265, 3266, 3266, 3266, 3267, 1, 3268, 1, 3175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3175, 1, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3262, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3264, 3263, 3263, 3265, 3266, 3266, 3266, 3267, 1, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 1, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 1, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 1, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 1, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 1, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 1, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 1, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 1, 3269, 3269, 3270, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3271, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3272, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3274, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3276, 3275, 3275, 3277, 3278, 3278, 3278, 3279, 1, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 1, 3280, 3280, 3281, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3282, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3283, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3285, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3287, 3286, 3286, 3288, 3289, 3289, 3289, 3290, 1, 3291, 1, 3280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3280, 1, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3285, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3287, 3286, 3286, 3288, 3289, 3289, 3289, 3290, 1, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 1, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 1, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 1, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 1, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 1, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 1, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 1, 342, 1, 1, 1, 3292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 342, 3293, 3294, 3293, 3293, 3293, 3293, 3293, 3295, 1, 3293, 3293, 1, 3293, 1, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 3293, 1, 3293, 1, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3297, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3299, 3298, 3298, 3300, 3301, 3301, 3301, 3302, 1, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 320, 1, 3303, 3303, 3304, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 320, 3303, 1, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3305, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3307, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3309, 3308, 3308, 3310, 3311, 3311, 3311, 3312, 1, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 1, 3303, 3303, 3313, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3314, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3305, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3307, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3309, 3308, 3308, 3310, 3311, 3311, 3311, 3312, 1, 3315, 1, 3303, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3303, 1, 3316, 1, 1, 1, 3317, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3316, 3314, 320, 3314, 3314, 3314, 3314, 3314, 3318, 1, 3314, 3314, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 323, 3314, 324, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3320, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3322, 3321, 3321, 3323, 3324, 3324, 3324, 3325, 1, 3326, 1, 1, 1, 3327, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3326, 1, 1, 1, 1, 1, 1, 1, 3328, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 337, 1, 3329, 1, 3326, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3326, 1, 3330, 1, 1, 1, 3331, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3330, 1, 1, 1, 1, 1, 1, 1, 3332, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 344, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 1, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3307, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3309, 3308, 3308, 3310, 3311, 3311, 3311, 3312, 1, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 1, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 3306, 1, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 1, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 1, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 1, 3333, 1, 320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 320, 1, 3334, 1, 1, 1, 3335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3334, 319, 3336, 319, 319, 319, 319, 319, 3337, 1, 319, 319, 1, 319, 3314, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 319, 323, 319, 324, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 326, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 327, 329, 330, 330, 330, 331, 1, 3338, 1, 1, 1, 3339, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3338, 346, 347, 346, 346, 346, 346, 346, 3340, 1, 346, 346, 1, 346, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 336, 346, 337, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 350, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 352, 351, 351, 353, 354, 354, 354, 355, 1, 3341, 1, 3338, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3338, 1, 3342, 1, 1, 1, 3343, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3342, 3293, 3294, 3293, 3293, 3293, 3293, 3293, 3344, 1, 3293, 3293, 1, 3293, 1, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 3293, 343, 3293, 344, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3297, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3299, 3298, 3298, 3300, 3301, 3301, 3301, 3302, 1, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3346, 1, 3345, 3345, 3347, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3346, 3345, 3271, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3348, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3352, 3351, 3351, 3353, 3354, 3354, 3354, 3355, 1, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 1, 3356, 3356, 3357, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3358, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3359, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3361, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3363, 3362, 3362, 3364, 3365, 3365, 3365, 3366, 1, 3367, 1, 3356, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3356, 1, 317, 1, 1, 1, 318, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 317, 3314, 320, 3314, 3314, 3314, 3314, 3314, 321, 1, 3314, 3314, 1, 3314, 322, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 323, 3314, 324, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3320, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3322, 3321, 3321, 3323, 3324, 3324, 3324, 3325, 1, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3361, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3363, 3362, 3362, 3364, 3365, 3365, 3365, 3366, 1, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 1, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 1, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 1, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3368, 1, 3356, 3356, 3369, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3368, 3356, 3282, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3359, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3361, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3363, 3362, 3362, 3364, 3365, 3365, 3365, 3366, 1, 3370, 1, 3368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3368, 1, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 1, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, 1, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 1, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 1, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 1, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3372, 1, 3371, 3371, 3373, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3372, 3371, 3374, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3375, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3377, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3379, 3378, 3378, 3380, 3381, 3381, 3381, 3382, 1, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 1, 3383, 3383, 3384, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3385, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3386, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3389, 3389, 3391, 3392, 3392, 3392, 3393, 1, 3394, 1, 3383, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3383, 1, 3395, 1, 1, 1, 3396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3395, 3314, 320, 3314, 3314, 3314, 3314, 3314, 3397, 1, 3314, 3314, 1, 3314, 322, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 323, 3314, 3398, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3320, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3322, 3321, 3321, 3323, 3324, 3324, 3324, 3325, 1, 3399, 1, 1, 1, 3400, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3399, 1, 1, 1, 1, 1, 1, 1, 3401, 1, 1, 1, 1, 1, 335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 3402, 1, 3403, 1, 3399, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3399, 1, 3404, 1, 1, 1, 3405, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3404, 1, 1, 1, 1, 1, 1, 1, 3406, 1, 1, 1, 1, 1, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 3407, 1, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3389, 3389, 3391, 3392, 3392, 3392, 3393, 1, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 1, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 1, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 1, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 1, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3408, 1, 3383, 3383, 3409, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3408, 3383, 3410, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3386, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3389, 3389, 3391, 3392, 3392, 3392, 3393, 1, 3411, 1, 3408, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3408, 1, 3412, 1, 1, 1, 3413, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3412, 1, 1, 1, 1, 1, 1, 1, 3414, 1, 1, 1, 1, 1, 335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 3415, 1, 3416, 1, 3412, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3412, 1, 3417, 1, 1, 1, 3418, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3417, 1, 1, 1, 1, 1, 1, 1, 3419, 1, 1, 1, 1, 1, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 3420, 1, 3421, 1, 1, 1, 3422, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3421, 3423, 3424, 3423, 3423, 3423, 3423, 3423, 3425, 1, 3423, 3423, 3426, 3423, 3427, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 3423, 1, 3423, 3428, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3430, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3432, 3431, 3431, 3433, 3434, 3434, 3434, 3435, 1, 314, 1, 1, 1, 3436, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 314, 1, 1, 1, 1, 1, 1, 1, 3437, 1, 1, 1, 314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 315, 1, 3438, 1, 314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 314, 1, 3426, 1, 1, 1, 3439, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3426, 1, 1, 1, 1, 1, 1, 1, 3440, 1, 1, 1, 3426, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3428, 1, 3441, 1, 1, 1, 3442, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3441, 3443, 3444, 3443, 3443, 3443, 3443, 3443, 3445, 1, 3443, 3443, 1, 3443, 3446, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 1, 1, 1, 3443, 1, 3443, 1, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3447, 1, 1, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3449, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3451, 3450, 3450, 3452, 3453, 3453, 3453, 3454, 1, 3455, 1, 1, 1, 3456, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3455, 3457, 3458, 3457, 3457, 3457, 3457, 3457, 3459, 1, 3457, 3457, 1, 3457, 3460, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 3457, 1, 3457, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3461, 1, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3465, 3464, 3464, 3466, 3467, 3467, 3467, 3468, 1, 3469, 1, 3455, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3455, 1, 3470, 1, 1, 1, 3471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3470, 3457, 3458, 3457, 3457, 3457, 3457, 3457, 3472, 1, 3457, 3457, 3473, 3457, 3474, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3475, 1, 1, 3457, 1, 3457, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3465, 3464, 3464, 3466, 3467, 3467, 3467, 3468, 1, 3470, 1, 1, 1, 3471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3470, 1, 1, 1, 1, 1, 1, 1, 3472, 1, 1, 1, 3473, 1, 3476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3475, 1, 3477, 1, 3470, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3470, 1, 3478, 1, 1, 1, 3479, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3478, 1, 1, 1, 1, 1, 1, 1, 3480, 1, 1, 1, 3481, 1, 3482, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3483, 1, 3484, 1, 1, 1, 3485, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3484, 1, 1, 1, 1, 1, 1, 1, 3486, 1, 1, 1, 3484, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3487, 1, 1, 1, 1, 1, 315, 1, 3488, 1, 3484, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3484, 1, 3489, 1, 1, 1, 3490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3489, 1, 1, 1, 1, 1, 1, 1, 3491, 1, 1, 1, 3489, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3492, 1, 1, 1, 1, 1, 3428, 1, 3493, 1, 1, 1, 3494, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3493, 3495, 3496, 3495, 3495, 3495, 3495, 3495, 3497, 1, 3495, 3495, 1, 3495, 3498, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 1, 1, 1, 3495, 1, 3495, 1, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 1, 1, 1, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3500, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3502, 3501, 3501, 3503, 3504, 3504, 3504, 3505, 1, 3506, 1, 1, 1, 3507, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3506, 298, 299, 298, 298, 298, 298, 298, 3508, 1, 298, 298, 1, 298, 302, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 1, 298, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 305, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 306, 306, 308, 309, 309, 309, 310, 1, 3509, 1, 3506, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3506, 1, 3510, 1, 1, 1, 3511, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3510, 3423, 3424, 3423, 3423, 3423, 3423, 3423, 3512, 1, 3423, 3423, 1, 3423, 3427, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 3423, 1, 3423, 1, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3430, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3432, 3431, 3431, 3433, 3434, 3434, 3434, 3435, 1, 3314, 320, 3314, 3314, 3314, 3314, 3314, 1, 1, 3314, 3314, 1, 3314, 3513, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 1, 3314, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3320, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3322, 3321, 3321, 3323, 3324, 3324, 3324, 3325, 1, 3476, 1, 1, 1, 3514, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3476, 3515, 1, 3515, 3515, 3515, 3515, 3515, 3516, 1, 3515, 3515, 1, 3515, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 1, 1, 3515, 1, 3515, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 1, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3518, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3520, 3519, 3519, 3521, 3522, 3522, 3522, 3523, 1, 3524, 1, 3476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3476, 1, 3470, 1, 1, 1, 3471, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3470, 3515, 1, 3515, 3515, 3515, 3515, 3515, 3472, 1, 3515, 3515, 3473, 3515, 3476, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3475, 1, 1, 3515, 1, 3515, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 1, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3518, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3520, 3519, 3519, 3521, 3522, 3522, 3522, 3523, 1, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 1, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 1, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 1, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 1, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 1, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 1, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 3519, 1, 3482, 1, 1, 1, 3525, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3482, 3526, 1, 3526, 3526, 3526, 3526, 3526, 3527, 1, 3526, 3526, 1, 3526, 1, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 1, 1, 1, 3526, 1, 3526, 1, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 1, 1, 1, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3529, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, 3531, 3530, 3530, 3532, 3533, 3533, 3533, 3534, 1, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3458, 1, 3535, 3535, 3536, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3458, 3535, 1, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3537, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3539, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3541, 3540, 3540, 3542, 3543, 3543, 3543, 3544, 1, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 1, 3535, 3535, 3545, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3546, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3537, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3539, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3541, 3540, 3540, 3542, 3543, 3543, 3543, 3544, 1, 3547, 1, 3535, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3535, 1, 3548, 1, 1, 1, 3549, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3548, 3546, 3458, 3546, 3546, 3546, 3546, 3546, 3550, 1, 3546, 3546, 3473, 3546, 3460, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3475, 1, 1, 3546, 1, 3546, 1, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 1, 1, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3552, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3554, 3553, 3553, 3555, 3556, 3556, 3556, 3557, 1, 3548, 1, 1, 1, 3549, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3548, 1, 1, 1, 1, 1, 1, 1, 3550, 1, 1, 1, 3473, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3475, 1, 3558, 1, 3548, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3548, 1, 3559, 1, 1, 1, 3560, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3559, 1, 1, 1, 1, 1, 1, 1, 3561, 1, 1, 1, 3481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3483, 1, 3546, 3458, 3546, 3546, 3546, 3546, 3546, 1, 1, 3546, 3546, 1, 3546, 3460, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 1, 1, 3546, 1, 3546, 1, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 1, 1, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3552, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3554, 3553, 3553, 3555, 3556, 3556, 3556, 3557, 1, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 1, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 1, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 1, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 1, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 1, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 1, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 1, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3539, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3541, 3540, 3540, 3542, 3543, 3543, 3543, 3544, 1, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 1, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 1, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 1, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 1, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 1, 3562, 1, 3458, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3458, 1, 3476, 1, 1, 1, 3514, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3476, 3457, 3458, 3457, 3457, 3457, 3457, 3457, 3516, 1, 3457, 3457, 1, 3457, 3460, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 3457, 1, 3457, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3465, 3464, 3464, 3466, 3467, 3467, 3467, 3468, 1, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 1, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 1, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 1, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 1, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 1, 3563, 1, 1, 1, 3564, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3563, 3565, 3566, 3565, 3565, 3565, 3565, 3565, 3567, 1, 3565, 3565, 1, 3565, 3568, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 1, 1, 1, 3565, 1, 3565, 1, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3569, 1, 1, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3571, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3573, 3572, 3572, 3574, 3575, 3575, 3575, 3576, 1, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 1, 3461, 3461, 3577, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 1, 3578, 3548, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3580, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3582, 3581, 3581, 3583, 3584, 3584, 3584, 3585, 1, 3586, 1, 3461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3461, 1, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3580, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3582, 3581, 3581, 3583, 3584, 3584, 3584, 3585, 1, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 1, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 1, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 1, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 1, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 1, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 1, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 3581, 1, 3587, 1, 1, 1, 3588, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3587, 1970, 1971, 1970, 1970, 1970, 1970, 1970, 3589, 1, 1970, 1970, 3590, 1970, 1974, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1975, 295, 1970, 1, 1970, 1, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1, 1, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1977, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1979, 1978, 1978, 1980, 1981, 1981, 1981, 1982, 1, 3591, 1, 1, 1, 3592, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3591, 1985, 1986, 1985, 1985, 1985, 1985, 1985, 3593, 1, 1985, 1985, 181, 1985, 1988, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 183, 1989, 1985, 1, 1985, 1990, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 1, 1, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1994, 1993, 1993, 1995, 1996, 1996, 1996, 1997, 1, 3594, 1, 1, 1, 3595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3594, 2000, 2001, 2000, 2000, 2000, 2000, 2000, 3596, 1, 2000, 2000, 181, 2000, 2003, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 183, 2004, 2000, 1, 2000, 1, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 1, 1, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2006, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2008, 2007, 2007, 2009, 2010, 2010, 2010, 2011, 1, 3597, 1, 3594, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3594, 1, 3598, 1, 1, 1, 3599, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3598, 3074, 3075, 3074, 3074, 3074, 3074, 3074, 3600, 1, 3074, 3074, 3590, 3074, 3077, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1975, 2100, 3074, 1, 3074, 1, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1, 1, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3079, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3081, 3080, 3080, 3082, 3083, 3083, 3083, 3084, 1, 3601, 1, 1, 1, 3602, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3601, 3603, 3604, 3603, 3603, 3603, 3603, 3603, 3605, 1, 3603, 3603, 1, 3603, 3606, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 25, 1, 26, 3603, 1, 3603, 24, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3607, 1, 1, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3609, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3611, 3610, 3610, 3612, 3613, 3613, 3613, 3614, 1, 3615, 1, 1, 1, 3616, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3615, 3617, 3618, 3617, 3617, 3617, 3617, 3617, 3619, 1, 3617, 3617, 1, 3617, 3620, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 8, 3617, 1, 3617, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3621, 1, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3623, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3625, 3624, 3624, 3626, 3627, 3627, 3627, 3628, 1, 3629, 1, 3615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3615, 1, 3630, 1, 3631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3631, 1, 3632, 1, 1, 1, 3633, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3632, 3634, 22, 3634, 3634, 3634, 3634, 3634, 3635, 1, 3634, 3634, 1, 3634, 24, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 25, 1, 26, 3634, 1, 3634, 24, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3637, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3639, 3638, 3638, 3640, 3641, 3641, 3641, 3642, 1, 3643, 1, 1, 1, 3644, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3643, 3634, 22, 3634, 3634, 3634, 3634, 3634, 3645, 1, 3634, 3634, 1, 3634, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 8, 3634, 1, 3634, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3637, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3639, 3638, 3638, 3640, 3641, 3641, 3641, 3642, 1, 3646, 1, 3643, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3643, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 1, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 1, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 1, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 1, 3647, 1, 1, 1, 3648, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3647, 3649, 61, 3649, 3649, 3649, 3649, 3649, 3650, 1, 3649, 3649, 1, 3649, 1, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 1, 1, 83, 3649, 1, 3649, 1, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 1, 1, 1, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3651, 3652, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3654, 3653, 3653, 3655, 3656, 3656, 3656, 3657, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 1, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 1, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 1, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 1, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3659, 1, 3658, 3658, 3660, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3659, 3658, 37, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3661, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3658, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3663, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3665, 3664, 3664, 3666, 3667, 3667, 3667, 3668, 1, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 1, 3669, 3669, 3670, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3671, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3672, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3674, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3676, 3675, 3675, 3677, 3678, 3678, 3678, 3679, 1, 3680, 1, 3669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3669, 1, 3681, 1, 3682, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3682, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 3683, 3618, 3683, 3683, 3683, 3683, 3683, 75, 1, 3683, 3683, 1, 3683, 3684, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 25, 1, 26, 3683, 1, 3683, 24, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 1, 1, 1, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3686, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3688, 3687, 3687, 3689, 3690, 3690, 3690, 3691, 1, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 1, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 1, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 1, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 1, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 1, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 1, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 1, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3674, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3676, 3675, 3675, 3677, 3678, 3678, 3678, 3679, 1, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 1, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 1, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 1, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 1, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3692, 1, 3669, 3669, 3693, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3692, 3669, 48, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3672, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3674, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3676, 3675, 3675, 3677, 3678, 3678, 3678, 3679, 1, 3694, 1, 3692, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3692, 1, 3632, 1, 1, 1, 3633, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3632, 3617, 3618, 3617, 3617, 3617, 3617, 3617, 3635, 1, 3617, 3617, 1, 3617, 3684, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 25, 1, 26, 3617, 1, 3617, 24, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3623, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3625, 3624, 3624, 3626, 3627, 3627, 3627, 3628, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 1, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 1, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 1, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 1, 3695, 1, 1, 1, 3696, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3695, 3697, 3698, 3697, 3697, 3697, 3697, 3697, 3699, 1, 3697, 3697, 1, 3697, 3700, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 1, 1, 83, 3697, 1, 3697, 1, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3701, 1, 1, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3703, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3705, 3704, 3704, 3706, 3707, 3707, 3707, 3708, 1, 3709, 3710, 3709, 3709, 3709, 3709, 3709, 1, 1, 3709, 3709, 1, 3709, 3620, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 1, 1, 3709, 1, 3709, 1, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 1, 1, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3712, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3714, 3713, 3713, 3715, 3716, 3716, 3716, 3717, 1, 3718, 1, 3719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3719, 1, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3710, 1, 3720, 3720, 3721, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3710, 3720, 1, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3722, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3724, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3726, 3725, 3725, 3727, 3728, 3728, 3728, 3729, 1, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 1, 3720, 3720, 3730, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3709, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3722, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3724, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3726, 3725, 3725, 3727, 3728, 3728, 3728, 3729, 1, 3731, 1, 3720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3720, 1, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3724, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3726, 3725, 3725, 3727, 3728, 3728, 3728, 3729, 1, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 1, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 1, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 1, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 1, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 3725, 1, 3732, 1, 3710, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3710, 1, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 1, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 1, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 1, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 1, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 1, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 1, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 1, 3621, 3621, 3733, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 1, 3734, 3719, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3736, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3738, 3737, 3737, 3739, 3740, 3740, 3740, 3741, 1, 3742, 1, 3621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3621, 1, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3736, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3738, 3737, 3737, 3739, 3740, 3740, 3740, 3741, 1, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 1, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 1, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 1, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 3735, 1, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 1, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 1, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 3737, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 1, 3743, 3743, 3744, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3745, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3746, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 3743, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3747, 3748, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3750, 3749, 3749, 3751, 3752, 3752, 3752, 3753, 1, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 1, 3754, 3754, 3755, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3756, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3757, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3759, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3761, 3760, 3760, 3762, 3763, 3763, 3763, 3764, 1, 3765, 1, 3754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3754, 1, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3759, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3761, 3760, 3760, 3762, 3763, 3763, 3763, 3764, 1, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 1, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 1, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 1, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 3758, 1, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 1, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 1, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 3760, 1, 3766, 1, 1, 1, 3767, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3766, 3768, 3769, 3768, 3768, 3768, 3768, 3768, 3770, 1, 3768, 3768, 1, 3768, 1, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 1, 83, 3768, 1, 3768, 1, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 1, 1, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3772, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3774, 3773, 3773, 3775, 3776, 3776, 3776, 3777, 1, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3779, 1, 3778, 3778, 3780, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3779, 3778, 37, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3781, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 3778, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3783, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3784, 3785, 3784, 3784, 3786, 3787, 3787, 3787, 3788, 1, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 1, 3789, 3789, 3790, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3791, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3792, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3794, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3796, 3795, 3795, 3797, 3798, 3798, 3798, 3799, 1, 3800, 1, 3789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3789, 1, 3801, 1, 3802, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3802, 1, 3803, 1, 3804, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3804, 1, 3805, 1, 1, 1, 3806, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3805, 3807, 3808, 3807, 3807, 3807, 3807, 3807, 3809, 1, 3807, 3807, 1, 3807, 3810, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 1, 1, 1, 3807, 1, 3807, 1, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3607, 1, 1, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3812, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3813, 3814, 3813, 3813, 3815, 3816, 3816, 3816, 3817, 1, 3818, 1, 1, 1, 3819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3818, 3820, 3710, 3820, 3820, 3820, 3820, 3820, 3821, 1, 3820, 3820, 1, 3820, 3620, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 3820, 1, 3820, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3621, 1, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3823, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3825, 3824, 3824, 3826, 3827, 3827, 3827, 3828, 1, 3829, 1, 3818, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3818, 1, 3830, 1, 3831, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3831, 1, 3832, 1, 1, 1, 3833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3832, 3834, 1, 3834, 3834, 3834, 3834, 3834, 3835, 1, 3834, 3834, 1, 3834, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 1, 1, 3834, 1, 3834, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 1, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3837, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3839, 3838, 3838, 3840, 3841, 3841, 3841, 3842, 1, 3843, 1, 3832, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3832, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 1, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 1, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 1, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 1, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 1, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 1, 3844, 1, 1, 1, 3845, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3844, 3846, 1, 3846, 3846, 3846, 3846, 3846, 3847, 1, 3846, 3846, 1, 3846, 1, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 1, 1, 1, 3846, 1, 3846, 1, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 1, 1, 1, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3849, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3850, 3851, 3850, 3850, 3852, 3853, 3853, 3853, 3854, 1, 3832, 1, 1, 1, 3833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3832, 3820, 3710, 3820, 3820, 3820, 3820, 3820, 3835, 1, 3820, 3820, 1, 3820, 3620, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 3820, 1, 3820, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3823, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3825, 3824, 3824, 3826, 3827, 3827, 3827, 3828, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 1, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 1, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 1, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 1, 3855, 1, 1, 1, 3856, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3855, 3857, 3858, 3857, 3857, 3857, 3857, 3857, 3859, 1, 3857, 3857, 1, 3857, 3700, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 1, 1, 1, 3857, 1, 3857, 1, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3701, 1, 1, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3861, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3863, 3862, 3862, 3864, 3865, 3865, 3865, 3866, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 1, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 1, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 1, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 1, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3794, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3796, 3795, 3795, 3797, 3798, 3798, 3798, 3799, 1, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 1, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 1, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 1, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 1, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3870, 1, 3789, 3789, 3871, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3870, 3789, 48, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3792, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3794, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3796, 3795, 3795, 3797, 3798, 3798, 3798, 3799, 1, 3872, 1, 3870, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3870, 1, 3873, 1, 3874, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3874, 1, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3876, 1, 3875, 3875, 3877, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3876, 3875, 3745, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3878, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3879, 3880, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3882, 3881, 3881, 3883, 3884, 3884, 3884, 3885, 1, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 1, 3886, 3886, 3887, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3888, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3889, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3891, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3893, 3892, 3892, 3894, 3895, 3895, 3895, 3896, 1, 3897, 1, 3886, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3886, 1, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3891, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3893, 3892, 3892, 3894, 3895, 3895, 3895, 3896, 1, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 1, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 1, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 1, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 1, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3898, 1, 3886, 3886, 3899, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3898, 3886, 3756, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3889, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3891, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3893, 3892, 3892, 3894, 3895, 3895, 3895, 3896, 1, 3900, 1, 3898, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3898, 1, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 1, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 1, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 1, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 1, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 1, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 1, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 1, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3905, 1, 3904, 3904, 3906, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3905, 3904, 3907, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3908, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3910, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3912, 3911, 3911, 3913, 3914, 3914, 3914, 3915, 1, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 1, 3916, 3916, 3917, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3918, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3919, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3923, 3922, 3922, 3924, 3925, 3925, 3925, 3926, 1, 3927, 1, 3916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3916, 1, 3928, 1, 3929, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3929, 1, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3923, 3922, 3922, 3924, 3925, 3925, 3925, 3926, 1, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 1, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 1, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 1, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 1, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3930, 1, 3916, 3916, 3931, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3930, 3916, 3932, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3919, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3923, 3922, 3922, 3924, 3925, 3925, 3925, 3926, 1, 3933, 1, 3930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3930, 1, 3934, 1, 3935, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3935, 1, 3936, 1, 1, 1, 3937, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3936, 3938, 3939, 3938, 3938, 3938, 3938, 3938, 3940, 1, 3938, 3938, 1, 3938, 3941, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 1, 1, 83, 3938, 1, 3938, 1, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 1, 1, 1, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3943, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3944, 3945, 3944, 3944, 3946, 3947, 3947, 3947, 3948, 1, 3949, 1, 1, 1, 3950, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3949, 3951, 3952, 3951, 3951, 3951, 3951, 3951, 3953, 1, 3951, 3951, 1, 3951, 3954, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 1, 1, 8, 3951, 1, 3951, 1, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 1, 1, 1, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3956, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3958, 3957, 3957, 3959, 3960, 3960, 3960, 3961, 1, 3962, 1, 3949, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3949, 1, 3963, 3964, 3963, 3963, 3963, 3963, 3963, 1, 1, 3963, 3963, 1, 3963, 3965, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 1, 1, 3963, 1, 3963, 1, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 1, 1, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3967, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3969, 3968, 3968, 3970, 3971, 3971, 3971, 3972, 1, 3973, 1, 3974, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3974, 1, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3964, 1, 3975, 3975, 3976, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3964, 3975, 1, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3977, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3981, 3980, 3980, 3982, 3983, 3983, 3983, 3984, 1, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1, 3975, 3975, 3985, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3963, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3977, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3981, 3980, 3980, 3982, 3983, 3983, 3983, 3984, 1, 3986, 1, 3975, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3975, 1, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3979, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3981, 3980, 3980, 3982, 3983, 3983, 3983, 3984, 1, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 1, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 1, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 1, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 1, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 1, 3987, 1, 3964, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3964, 1, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 1, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 1, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 1, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 1, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 1, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 3867, 3988, 3867, 3867, 3867, 3867, 3867, 75, 1, 3867, 3867, 1, 3867, 3989, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 25, 1, 26, 3867, 1, 3867, 24, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3990, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3991, 3869, 3869, 3992, 3993, 3993, 3993, 3994, 1, 3995, 1, 1, 1, 3996, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3995, 3997, 3998, 3997, 3997, 3997, 3997, 3997, 3999, 1, 3997, 3997, 1, 3997, 4000, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 1, 1, 1, 3997, 1, 3997, 1, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 4001, 1, 1, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4003, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4005, 4004, 4004, 4006, 4007, 4007, 4007, 4008, 1, 4009, 1, 1, 1, 4010, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4009, 4011, 4012, 4011, 4011, 4011, 4011, 4011, 4013, 1, 4011, 4011, 1, 4011, 4014, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 4011, 1, 4011, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4015, 1, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4017, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4019, 4018, 4018, 4020, 4021, 4021, 4021, 4022, 1, 4023, 1, 4009, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4009, 1, 4024, 1, 1, 1, 4025, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4024, 4011, 4012, 4011, 4011, 4011, 4011, 4011, 4026, 1, 4011, 4011, 1, 4011, 4027, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 4011, 4028, 4011, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4017, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4019, 4018, 4018, 4020, 4021, 4021, 4021, 4022, 1, 4024, 1, 1, 1, 4025, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4024, 1, 1, 1, 1, 1, 1, 1, 4026, 1, 1, 1, 1, 1, 4029, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4028, 1, 4030, 1, 4024, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4024, 1, 4031, 1, 1, 1, 4032, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4031, 1, 1, 1, 1, 1, 1, 1, 4033, 1, 1, 1, 1, 1, 4034, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4035, 1, 4029, 1, 1, 1, 4036, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4029, 4037, 1, 4037, 4037, 4037, 4037, 4037, 4038, 1, 4037, 4037, 1, 4037, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 4037, 1, 4037, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4040, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4042, 4041, 4041, 4043, 4044, 4044, 4044, 4045, 1, 4046, 1, 4029, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4029, 1, 4024, 1, 1, 1, 4025, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4024, 4037, 1, 4037, 4037, 4037, 4037, 4037, 4026, 1, 4037, 4037, 1, 4037, 4029, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 4037, 4028, 4037, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4040, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4042, 4041, 4041, 4043, 4044, 4044, 4044, 4045, 1, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 4037, 1, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 1, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 1, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 1, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 1, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 1, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 1, 4034, 1, 1, 1, 4047, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4034, 4048, 1, 4048, 4048, 4048, 4048, 4048, 4049, 1, 4048, 4048, 1, 4048, 1, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 1, 1, 1, 4048, 1, 4048, 1, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 1, 1, 1, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 4048, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4051, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4052, 4053, 4052, 4052, 4054, 4055, 4055, 4055, 4056, 1, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4012, 1, 4057, 4057, 4058, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4012, 4057, 1, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4059, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4061, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4063, 4062, 4062, 4064, 4065, 4065, 4065, 4066, 1, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 1, 4057, 4057, 4067, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4068, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4059, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4061, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4063, 4062, 4062, 4064, 4065, 4065, 4065, 4066, 1, 4069, 1, 4057, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4057, 1, 4070, 1, 1, 1, 4071, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4070, 4068, 4012, 4068, 4068, 4068, 4068, 4068, 4072, 1, 4068, 4068, 1, 4068, 4014, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 4068, 4028, 4068, 1, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4074, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4076, 4075, 4075, 4077, 4078, 4078, 4078, 4079, 1, 4070, 1, 1, 1, 4071, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4070, 1, 1, 1, 1, 1, 1, 1, 4072, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4028, 1, 4080, 1, 4070, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4070, 1, 4081, 1, 1, 1, 4082, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4081, 1, 1, 1, 1, 1, 1, 1, 4083, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4035, 1, 4068, 4012, 4068, 4068, 4068, 4068, 4068, 1, 1, 4068, 4068, 1, 4068, 4014, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 4068, 1, 4068, 1, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4074, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4076, 4075, 4075, 4077, 4078, 4078, 4078, 4079, 1, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 1, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 1, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 1, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 4073, 1, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 1, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 1, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 4075, 1, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4061, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4063, 4062, 4062, 4064, 4065, 4065, 4065, 4066, 1, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 4057, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 1, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 4060, 1, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 1, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 1, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 1, 4084, 1, 4012, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4012, 1, 4029, 1, 1, 1, 4036, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4029, 4011, 4012, 4011, 4011, 4011, 4011, 4011, 4038, 1, 4011, 4011, 1, 4011, 4014, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 4011, 1, 4011, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4017, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4019, 4018, 4018, 4020, 4021, 4021, 4021, 4022, 1, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 1, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 4016, 1, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 1, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 1, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 1, 4085, 1, 1, 1, 4086, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4085, 4087, 4088, 4087, 4087, 4087, 4087, 4087, 4089, 1, 4087, 4087, 1, 4087, 4090, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 1, 1, 1, 4087, 1, 4087, 1, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4091, 1, 1, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4093, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4094, 4095, 4094, 4094, 4096, 4097, 4097, 4097, 4098, 1, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1, 4015, 4015, 4099, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1, 4100, 4070, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4102, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4104, 4103, 4103, 4105, 4106, 4106, 4106, 4107, 1, 4108, 1, 4015, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4015, 1, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4102, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4104, 4103, 4103, 4105, 4106, 4106, 4106, 4107, 1, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 1, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 1, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 1, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 1, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 1, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 1, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 4103, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 1, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 1, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 1, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 1, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 1, 4109, 4109, 4110, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4111, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4112, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4114, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4116, 4115, 4115, 4117, 4118, 4118, 4118, 4119, 1, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 1, 4120, 4120, 4121, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4122, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4123, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4125, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4127, 4126, 4126, 4128, 4129, 4129, 4129, 4130, 1, 4131, 1, 4120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4120, 1, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4125, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4127, 4126, 4126, 4128, 4129, 4129, 4129, 4130, 1, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 1, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 1, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 1, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 1, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 1, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 1, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 1, 130, 1, 1, 1, 4132, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 130, 4133, 4134, 4133, 4133, 4133, 4133, 4133, 4135, 1, 4133, 4133, 1, 4133, 1, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 4133, 1, 4133, 1, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4137, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4139, 4138, 4138, 4140, 4141, 4141, 4141, 4142, 1, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 108, 1, 4143, 4143, 4144, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 108, 4143, 1, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4145, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4147, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4149, 4148, 4148, 4150, 4151, 4151, 4151, 4152, 1, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 1, 4143, 4143, 4153, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4154, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4145, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4147, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4149, 4148, 4148, 4150, 4151, 4151, 4151, 4152, 1, 4155, 1, 4143, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4143, 1, 4156, 1, 1, 1, 4157, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4156, 4154, 108, 4154, 4154, 4154, 4154, 4154, 4158, 1, 4154, 4154, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 111, 4154, 112, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4160, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4161, 4161, 4163, 4164, 4164, 4164, 4165, 1, 4166, 1, 1, 1, 4167, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4166, 1, 1, 1, 1, 1, 1, 1, 4168, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 125, 1, 4169, 1, 4166, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4166, 1, 4170, 1, 1, 1, 4171, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4170, 1, 1, 1, 1, 1, 1, 1, 4172, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 132, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 1, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 1, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 1, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 1, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4147, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4149, 4148, 4148, 4150, 4151, 4151, 4151, 4152, 1, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 1, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 1, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 1, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 1, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 1, 4173, 1, 108, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 1, 4174, 1, 1, 1, 4175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4174, 107, 4176, 107, 107, 107, 107, 107, 4177, 1, 107, 107, 1, 107, 4154, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 107, 111, 107, 112, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 115, 115, 117, 118, 118, 118, 119, 1, 4178, 1, 1, 1, 4179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4178, 134, 135, 134, 134, 134, 134, 134, 4180, 1, 134, 134, 1, 134, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 124, 134, 125, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 139, 139, 141, 142, 142, 142, 143, 1, 4181, 1, 4178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4178, 1, 4182, 1, 1, 1, 4183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4182, 4133, 4134, 4133, 4133, 4133, 4133, 4133, 4184, 1, 4133, 4133, 1, 4133, 1, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 4133, 131, 4133, 132, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4137, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4139, 4138, 4138, 4140, 4141, 4141, 4141, 4142, 1, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4186, 1, 4185, 4185, 4187, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4186, 4185, 4111, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4188, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4190, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4192, 4191, 4191, 4193, 4194, 4194, 4194, 4195, 1, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 1, 4196, 4196, 4197, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4198, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4199, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4201, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4203, 4202, 4202, 4204, 4205, 4205, 4205, 4206, 1, 4207, 1, 4196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4196, 1, 105, 1, 1, 1, 106, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 105, 4154, 108, 4154, 4154, 4154, 4154, 4154, 109, 1, 4154, 4154, 1, 4154, 110, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 111, 4154, 112, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4160, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4161, 4161, 4163, 4164, 4164, 4164, 4165, 1, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4201, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4203, 4202, 4202, 4204, 4205, 4205, 4205, 4206, 1, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 1, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 1, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 1, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 1, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4208, 1, 4196, 4196, 4209, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4208, 4196, 4122, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4199, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4201, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4203, 4202, 4202, 4204, 4205, 4205, 4205, 4206, 1, 4210, 1, 4208, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4208, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 1, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 1, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 1, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 1, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4212, 1, 4211, 4211, 4213, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4212, 4211, 4214, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4215, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4217, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4218, 4219, 4218, 4218, 4220, 4221, 4221, 4221, 4222, 1, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 1, 4223, 4223, 4224, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4225, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4226, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4228, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4230, 4229, 4229, 4231, 4232, 4232, 4232, 4233, 1, 4234, 1, 4223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4223, 1, 4235, 1, 1, 1, 4236, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4235, 4154, 108, 4154, 4154, 4154, 4154, 4154, 4237, 1, 4154, 4154, 1, 4154, 110, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 111, 4154, 4238, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4160, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4161, 4161, 4163, 4164, 4164, 4164, 4165, 1, 4239, 1, 1, 1, 4240, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4239, 1, 1, 1, 1, 1, 1, 1, 4241, 1, 1, 1, 1, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 4242, 1, 4243, 1, 4239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4239, 1, 4244, 1, 1, 1, 4245, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4244, 1, 1, 1, 1, 1, 1, 1, 4246, 1, 1, 1, 1, 1, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 4247, 1, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4228, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4230, 4229, 4229, 4231, 4232, 4232, 4232, 4233, 1, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 1, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 1, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 1, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 1, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4248, 1, 4223, 4223, 4249, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4248, 4223, 4250, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4226, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4228, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4230, 4229, 4229, 4231, 4232, 4232, 4232, 4233, 1, 4251, 1, 4248, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4248, 1, 4252, 1, 1, 1, 4253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4252, 1, 1, 1, 1, 1, 1, 1, 4254, 1, 1, 1, 1, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 124, 1, 4255, 1, 4256, 1, 4252, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4252, 1, 4257, 1, 1, 1, 4258, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4257, 1, 1, 1, 1, 1, 1, 1, 4259, 1, 1, 1, 1, 1, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 1, 4260, 1, 4261, 1, 1, 1, 4262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4261, 4263, 4264, 4263, 4263, 4263, 4263, 4263, 4265, 1, 4263, 4263, 4266, 4263, 4267, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 4263, 1, 4263, 4268, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4270, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4272, 4271, 4271, 4273, 4274, 4274, 4274, 4275, 1, 102, 1, 1, 1, 4276, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 102, 1, 1, 1, 1, 1, 1, 1, 4277, 1, 1, 1, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 103, 1, 4278, 1, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 102, 1, 4266, 1, 1, 1, 4279, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4266, 1, 1, 1, 1, 1, 1, 1, 4280, 1, 1, 1, 4266, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4268, 1, 4281, 1, 1, 1, 4282, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4281, 4283, 4284, 4283, 4283, 4283, 4283, 4283, 4285, 1, 4283, 4283, 1, 4283, 4286, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 1, 1, 1, 4283, 1, 4283, 1, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4287, 1, 1, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 4283, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4289, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4291, 4290, 4290, 4292, 4293, 4293, 4293, 4294, 1, 4295, 1, 1, 1, 4296, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4295, 4297, 4298, 4297, 4297, 4297, 4297, 4297, 4299, 1, 4297, 4297, 1, 4297, 4300, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 4297, 1, 4297, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4301, 1, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4303, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4305, 4304, 4304, 4306, 4307, 4307, 4307, 4308, 1, 4309, 1, 4295, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4295, 1, 4310, 1, 1, 1, 4311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4310, 4297, 4298, 4297, 4297, 4297, 4297, 4297, 4312, 1, 4297, 4297, 4313, 4297, 4314, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4315, 1, 1, 4297, 1, 4297, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4303, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4305, 4304, 4304, 4306, 4307, 4307, 4307, 4308, 1, 4310, 1, 1, 1, 4311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4310, 1, 1, 1, 1, 1, 1, 1, 4312, 1, 1, 1, 4313, 1, 4316, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4315, 1, 4317, 1, 4310, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4310, 1, 4318, 1, 1, 1, 4319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4318, 1, 1, 1, 1, 1, 1, 1, 4320, 1, 1, 1, 4321, 1, 4322, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4323, 1, 4324, 1, 1, 1, 4325, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4324, 1, 1, 1, 1, 1, 1, 1, 4326, 1, 1, 1, 4324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4327, 1, 1, 1, 1, 1, 103, 1, 4328, 1, 4324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4324, 1, 4329, 1, 1, 1, 4330, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4329, 1, 1, 1, 1, 1, 1, 1, 4331, 1, 1, 1, 4329, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4332, 1, 1, 1, 1, 1, 4268, 1, 4333, 1, 1, 1, 4334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4333, 4335, 4336, 4335, 4335, 4335, 4335, 4335, 4337, 1, 4335, 4335, 1, 4335, 4338, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 1, 1, 1, 4335, 1, 4335, 1, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 1, 1, 1, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4340, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4341, 4342, 4341, 4341, 4343, 4344, 4344, 4344, 4345, 1, 4346, 1, 1, 1, 4347, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346, 86, 87, 86, 86, 86, 86, 86, 4348, 1, 86, 86, 1, 86, 90, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 1, 86, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 94, 94, 96, 97, 97, 97, 98, 1, 4349, 1, 4346, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4346, 1, 4350, 1, 1, 1, 4351, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4350, 4263, 4264, 4263, 4263, 4263, 4263, 4263, 4352, 1, 4263, 4263, 1, 4263, 4267, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 4263, 1, 4263, 1, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 4263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4270, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4272, 4271, 4271, 4273, 4274, 4274, 4274, 4275, 1, 4154, 108, 4154, 4154, 4154, 4154, 4154, 1, 1, 4154, 4154, 1, 4154, 4353, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 1, 4154, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4160, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4162, 4161, 4161, 4163, 4164, 4164, 4164, 4165, 1, 4316, 1, 1, 1, 4354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4316, 4355, 1, 4355, 4355, 4355, 4355, 4355, 4356, 1, 4355, 4355, 1, 4355, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 1, 1, 4355, 1, 4355, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 1, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4358, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4360, 4359, 4359, 4361, 4362, 4362, 4362, 4363, 1, 4364, 1, 4316, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4316, 1, 4310, 1, 1, 1, 4311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4310, 4355, 1, 4355, 4355, 4355, 4355, 4355, 4312, 1, 4355, 4355, 4313, 4355, 4316, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4315, 1, 1, 4355, 1, 4355, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 1, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4358, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4360, 4359, 4359, 4361, 4362, 4362, 4362, 4363, 1, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 1, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 1, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 1, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 1, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 1, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 1, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 1, 4322, 1, 1, 1, 4365, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4322, 4366, 1, 4366, 4366, 4366, 4366, 4366, 4367, 1, 4366, 4366, 1, 4366, 1, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 1, 1, 1, 4366, 1, 4366, 1, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 1, 1, 1, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4369, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4370, 4371, 4370, 4370, 4372, 4373, 4373, 4373, 4374, 1, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4298, 1, 4375, 4375, 4376, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4298, 4375, 1, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4377, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4379, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4381, 4380, 4380, 4382, 4383, 4383, 4383, 4384, 1, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 1, 4375, 4375, 4385, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4386, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4377, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4379, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4381, 4380, 4380, 4382, 4383, 4383, 4383, 4384, 1, 4387, 1, 4375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4375, 1, 4388, 1, 1, 1, 4389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4388, 4386, 4298, 4386, 4386, 4386, 4386, 4386, 4390, 1, 4386, 4386, 4313, 4386, 4300, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4315, 1, 1, 4386, 1, 4386, 1, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 1, 1, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4392, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4394, 4393, 4393, 4395, 4396, 4396, 4396, 4397, 1, 4388, 1, 1, 1, 4389, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4388, 1, 1, 1, 1, 1, 1, 1, 4390, 1, 1, 1, 4313, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4315, 1, 4398, 1, 4388, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4388, 1, 4399, 1, 1, 1, 4400, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4399, 1, 1, 1, 1, 1, 1, 1, 4401, 1, 1, 1, 4321, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4323, 1, 4386, 4298, 4386, 4386, 4386, 4386, 4386, 1, 1, 4386, 4386, 1, 4386, 4300, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 1, 1, 4386, 1, 4386, 1, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 1, 1, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4392, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4394, 4393, 4393, 4395, 4396, 4396, 4396, 4397, 1, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 1, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 1, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 1, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 1, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 1, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 1, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 1, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4379, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4381, 4380, 4380, 4382, 4383, 4383, 4383, 4384, 1, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 1, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 1, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 1, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 1, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 1, 4402, 1, 4298, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4298, 1, 4316, 1, 1, 1, 4354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4316, 4297, 4298, 4297, 4297, 4297, 4297, 4297, 4356, 1, 4297, 4297, 1, 4297, 4300, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 4297, 1, 4297, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4303, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4305, 4304, 4304, 4306, 4307, 4307, 4307, 4308, 1, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 1, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 1, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 1, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 1, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 1, 4403, 1, 1, 1, 4404, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4403, 4405, 4406, 4405, 4405, 4405, 4405, 4405, 4407, 1, 4405, 4405, 1, 4405, 4408, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 1, 1, 1, 4405, 1, 4405, 1, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4409, 1, 1, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4410, 4411, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4413, 4412, 4412, 4414, 4415, 4415, 4415, 4416, 1, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 1, 4301, 4301, 4417, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 1, 4418, 4388, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4420, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4422, 4421, 4421, 4423, 4424, 4424, 4424, 4425, 1, 4426, 1, 4301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4301, 1, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4420, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4422, 4421, 4421, 4423, 4424, 4424, 4424, 4425, 1, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 1, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 1, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 1, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 4419, 1, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 1, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 1, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 1, 4427, 1, 1, 1, 4428, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4427, 4429, 4430, 4429, 4429, 4429, 4429, 4429, 4431, 1, 4429, 4429, 1, 4429, 24, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 25, 1, 26, 4429, 1, 4429, 24, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4433, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4435, 4434, 4434, 4436, 4437, 4437, 4437, 4438, 1, 4439, 1, 1, 1, 4440, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4439, 4429, 4430, 4429, 4429, 4429, 4429, 4429, 4441, 1, 4429, 4429, 1, 4429, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 8, 4429, 1, 4429, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4433, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4435, 4434, 4434, 4436, 4437, 4437, 4437, 4438, 1, 4442, 1, 4439, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4439, 1, 4443, 1, 4444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4444, 1, 4445, 1, 1, 1, 4446, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4445, 3603, 3604, 3603, 3603, 3603, 3603, 3603, 4447, 1, 3603, 3603, 1, 3603, 3606, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 25, 1, 26, 3603, 1, 3603, 24, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3607, 1, 1, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3609, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3611, 3610, 3610, 3612, 3613, 3613, 3613, 3614, 1, 4448, 1, 1, 1, 4449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4448, 3617, 3618, 3617, 3617, 3617, 3617, 3617, 4450, 1, 3617, 3617, 1, 3617, 4451, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 8, 3617, 1, 3617, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3621, 1, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3623, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3625, 3624, 3624, 3626, 3627, 3627, 3627, 3628, 1, 4452, 1, 4448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4448, 1, 4453, 1, 1, 1, 4454, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4453, 3697, 3698, 3697, 3697, 3697, 3697, 3697, 4455, 1, 3697, 3697, 1, 3697, 4456, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 1, 1, 83, 3697, 1, 3697, 1, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3701, 1, 1, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3703, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3705, 3704, 3704, 3706, 3707, 3707, 3707, 3708, 1, 4457, 4458, 4457, 4457, 4457, 4457, 4457, 1, 1, 4457, 4457, 1, 4457, 4451, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 1, 1, 4457, 1, 4457, 1, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 1, 1, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4460, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4462, 4461, 4461, 4463, 4464, 4464, 4464, 4465, 1, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4458, 1, 4466, 4466, 4467, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4458, 4466, 1, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4468, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4470, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4472, 4471, 4471, 4473, 4474, 4474, 4474, 4475, 1, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 4466, 4466, 4476, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4457, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4468, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4470, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4472, 4471, 4471, 4473, 4474, 4474, 4474, 4475, 1, 4477, 1, 4466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4466, 1, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4470, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4472, 4471, 4471, 4473, 4474, 4474, 4474, 4475, 1, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 1, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 4469, 1, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 1, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 1, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 4471, 1, 4478, 1, 4458, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4458, 1, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 1, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 1, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 1, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 1, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 1, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 1, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 1, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 1, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 1, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 1, 4479, 4479, 4480, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4481, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4482, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4483, 4484, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4485, 4486, 4485, 4485, 4487, 4488, 4488, 4488, 4489, 1, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 1, 4490, 4490, 4491, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4492, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4493, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4495, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4497, 4496, 4496, 4498, 4499, 4499, 4499, 4500, 1, 4501, 1, 4490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4490, 1, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4495, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4497, 4496, 4496, 4498, 4499, 4499, 4499, 4500, 1, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 1, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 1, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 1, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 4494, 1, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 1, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 1, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 1, 4502, 1, 1, 1, 4503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4502, 4504, 4505, 4504, 4504, 4504, 4504, 4504, 4506, 1, 4504, 4504, 1, 4504, 1, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 1, 83, 4504, 1, 4504, 1, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 1, 1, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4508, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4510, 4509, 4509, 4511, 4512, 4512, 4512, 4513, 1, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4515, 1, 4514, 4514, 4516, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4515, 4514, 37, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4517, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4519, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4521, 4520, 4520, 4522, 4523, 4523, 4523, 4524, 1, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 1, 4525, 4525, 4526, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4527, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4528, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4530, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4532, 4531, 4531, 4533, 4534, 4534, 4534, 4535, 1, 4536, 1, 4525, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4525, 1, 4537, 1, 4538, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4538, 1, 4539, 1, 4540, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4540, 1, 4541, 1, 1, 1, 4542, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4541, 4543, 4544, 4543, 4543, 4543, 4543, 4543, 4545, 1, 4543, 4543, 1, 4543, 4546, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 1, 1, 1, 4543, 1, 4543, 1, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 3607, 1, 1, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4547, 4548, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4550, 4549, 4549, 4551, 4552, 4552, 4552, 4553, 1, 4554, 1, 1, 1, 4555, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4554, 4556, 4458, 4556, 4556, 4556, 4556, 4556, 4557, 1, 4556, 4556, 1, 4556, 4451, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 4556, 1, 4556, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 3621, 1, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4559, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4561, 4560, 4560, 4562, 4563, 4563, 4563, 4564, 1, 4565, 1, 4554, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4554, 1, 3832, 1, 1, 1, 3833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3832, 4556, 4458, 4556, 4556, 4556, 4556, 4556, 3835, 1, 4556, 4556, 1, 4556, 4451, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 4556, 1, 4556, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4559, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4561, 4560, 4560, 4562, 4563, 4563, 4563, 4564, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 1, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 1, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 1, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 1, 4566, 1, 1, 1, 4567, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4566, 4568, 4569, 4568, 4568, 4568, 4568, 4568, 4570, 1, 4568, 4568, 1, 4568, 4456, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 1, 1, 1, 4568, 1, 4568, 1, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 3701, 1, 1, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 4568, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4572, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4574, 4573, 4573, 4575, 4576, 4576, 4576, 4577, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 1, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 1, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 1, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 1, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4530, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4532, 4531, 4531, 4533, 4534, 4534, 4534, 4535, 1, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 1, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 1, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 1, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 1, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4581, 1, 4525, 4525, 4582, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4581, 4525, 48, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4528, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4530, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4532, 4531, 4531, 4533, 4534, 4534, 4534, 4535, 1, 4583, 1, 4581, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4581, 1, 4584, 1, 4585, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4585, 1, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4587, 1, 4586, 4586, 4588, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4587, 4586, 4481, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4589, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 4586, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 4591, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4593, 4592, 4592, 4594, 4595, 4595, 4595, 4596, 1, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 1, 4597, 4597, 4598, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4599, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4600, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4602, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4604, 4603, 4603, 4605, 4606, 4606, 4606, 4607, 1, 4608, 1, 4597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4597, 1, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4602, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4604, 4603, 4603, 4605, 4606, 4606, 4606, 4607, 1, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 1, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 1, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 1, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 1, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4609, 1, 4597, 4597, 4610, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4609, 4597, 4492, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4600, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 4597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4602, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4603, 4604, 4603, 4603, 4605, 4606, 4606, 4606, 4607, 1, 4611, 1, 4609, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4609, 1, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 1, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 1, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 1, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 1, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 1, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 1, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 1, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4616, 1, 4615, 4615, 4617, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4616, 4615, 4618, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4619, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4621, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4622, 4623, 4622, 4622, 4624, 4625, 4625, 4625, 4626, 1, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 1, 4627, 4627, 4628, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4629, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4630, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4632, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4634, 4633, 4633, 4635, 4636, 4636, 4636, 4637, 1, 4638, 1, 4627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4627, 1, 4639, 1, 4640, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4640, 1, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4632, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4634, 4633, 4633, 4635, 4636, 4636, 4636, 4637, 1, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 1, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 1, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 1, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 1, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4641, 1, 4627, 4627, 4642, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4641, 4627, 4643, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4630, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 4627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4632, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4634, 4633, 4633, 4635, 4636, 4636, 4636, 4637, 1, 4644, 1, 4641, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4641, 1, 4645, 1, 4646, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4646, 1, 4647, 1, 1, 1, 4648, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4647, 4649, 4650, 4649, 4649, 4649, 4649, 4649, 4651, 1, 4649, 4649, 1, 4649, 4652, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 1, 1, 83, 4649, 1, 4649, 1, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 1, 1, 1, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4654, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4656, 4655, 4655, 4657, 4658, 4658, 4658, 4659, 1, 4660, 1, 1, 1, 4661, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4660, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 8, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 13, 14, 14, 14, 15, 1, 4662, 1, 4660, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4660, 1, 4663, 4664, 4663, 4663, 4663, 4663, 4663, 1, 1, 4663, 4663, 1, 4663, 4665, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 1, 1, 4663, 1, 4663, 1, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 1, 1, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4667, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4669, 4668, 4668, 4670, 4671, 4671, 4671, 4672, 1, 4673, 1, 4674, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4674, 1, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4664, 1, 4675, 4675, 4676, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4664, 4675, 1, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4677, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4679, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4681, 4680, 4680, 4682, 4683, 4683, 4683, 4684, 1, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 1, 4675, 4675, 4685, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4663, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4677, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4679, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4681, 4680, 4680, 4682, 4683, 4683, 4683, 4684, 1, 4686, 1, 4675, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4675, 1, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4679, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4681, 4680, 4680, 4682, 4683, 4683, 4683, 4684, 1, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 1, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 1, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 1, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 1, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 4680, 1, 4687, 1, 4664, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4664, 1, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 1, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 1, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 1, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 1, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 1, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 4578, 4688, 4578, 4578, 4578, 4578, 4578, 75, 1, 4578, 4578, 1, 4578, 4689, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 25, 1, 26, 4578, 1, 4578, 24, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4690, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4691, 4580, 4580, 4692, 4693, 4693, 4693, 4694, 1, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 1, 4695, 4695, 4696, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4697, 4698, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4699, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4701, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4703, 4702, 4702, 4704, 4705, 4705, 4705, 4706, 1, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 1, 4707, 4707, 4708, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4709, 4710, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4711, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4713, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4715, 4714, 4714, 4716, 4717, 4717, 4717, 4718, 1, 4719, 1, 4707, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4707, 1, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4713, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4715, 4714, 4714, 4716, 4717, 4717, 4717, 4718, 1, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 1, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 1, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 1, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 1, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 1, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 1, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 1, 4720, 1, 1, 1, 4721, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4720, 4722, 4723, 4722, 4722, 4722, 4722, 4722, 4724, 1, 4722, 4722, 6, 4722, 4725, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 1, 6, 4726, 4722, 1, 4722, 4727, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 1, 1, 1, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4729, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4731, 4730, 4730, 4732, 4733, 4733, 4733, 4734, 1, 4735, 1, 1, 1, 4736, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4735, 4612, 4688, 4612, 4612, 4612, 4612, 4612, 4737, 1, 4612, 4612, 4738, 4612, 4739, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 25, 4738, 26, 4612, 1, 4612, 4740, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 1, 1, 1, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4741, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4742, 4614, 4614, 4743, 4744, 4744, 4744, 4745, 1, 4746, 1, 1, 1, 4747, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4746, 21, 22, 21, 21, 21, 21, 21, 4748, 1, 21, 21, 4749, 21, 4750, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4749, 26, 21, 1, 21, 4751, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4752, 1, 1, 1, 4753, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4752, 1, 1, 1, 1, 1, 1, 1, 4754, 1, 1, 1, 4755, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4755, 1, 4756, 1, 1, 1, 4757, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4756, 1, 1, 1, 1, 1, 1, 1, 4758, 1, 1, 1, 4759, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4759, 1, 4760, 1, 1, 1, 4761, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4760, 4762, 4763, 4762, 4762, 4762, 4762, 4762, 4764, 1, 4762, 4762, 6, 4762, 4765, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 1, 6, 4726, 4762, 1, 4762, 4727, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 1, 1, 1, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4767, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4769, 4768, 4768, 4770, 4771, 4771, 4771, 4772, 1, 4773, 1, 1, 1, 4774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4773, 3901, 3988, 3901, 3901, 3901, 3901, 3901, 4775, 1, 3901, 3901, 4738, 3901, 4776, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 25, 4738, 26, 3901, 1, 3901, 4777, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 1, 1, 1, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 4778, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 4779, 3903, 3903, 4780, 4781, 4781, 4781, 4782, 1, 4783, 1, 1, 1, 4784, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4783, 21, 22, 21, 21, 21, 21, 21, 4785, 1, 21, 21, 4749, 21, 4786, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4749, 26, 21, 1, 21, 4787, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4788, 1, 1, 1, 4789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4788, 60, 61, 60, 60, 60, 60, 60, 4790, 1, 60, 60, 4791, 60, 4792, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4791, 65, 60, 1, 60, 4793, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4794, 1, 1, 1, 4795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4794, 160, 22, 160, 160, 160, 160, 160, 4796, 1, 160, 160, 4755, 160, 4786, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 25, 4755, 26, 160, 1, 160, 4797, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 165, 165, 167, 168, 168, 168, 169, 1, 4794, 1, 1, 1, 4795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4794, 21, 22, 21, 21, 21, 21, 21, 4796, 1, 21, 21, 4755, 21, 4786, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4755, 26, 21, 1, 21, 4797, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4798, 1, 1, 1, 4799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4798, 60, 61, 60, 60, 60, 60, 60, 4800, 1, 60, 60, 4759, 60, 4792, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4759, 65, 60, 1, 60, 4801, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4802, 1, 1, 1, 4803, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4802, 630, 631, 630, 630, 630, 630, 630, 4804, 1, 630, 630, 6, 630, 633, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 6, 634, 630, 1, 630, 635, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 1, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, 639, 638, 638, 640, 641, 641, 641, 642, 1, 463, 1, 1, 1, 4805, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 463, 645, 646, 645, 645, 645, 645, 645, 4806, 1, 645, 645, 6, 645, 648, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 6, 545, 645, 1, 645, 1, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 1, 1, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 650, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 652, 651, 651, 653, 654, 654, 654, 655, 1, 4807, 1, 1, 1, 4808, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4807, 1115, 1116, 1115, 1115, 1115, 1115, 1115, 4809, 1, 1115, 1115, 4810, 1115, 1118, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 4810, 550, 1115, 1, 1115, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1121, 1121, 1123, 1124, 1124, 1124, 1125, 1, 183, 1, 1, 1, 4811, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 1, 1, 1, 1, 1, 1, 1, 4812, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1975, 1, 1, 1, 4813, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1975, 1, 1, 1, 1, 1, 1, 1, 4814, 1, 1, 1, 4810, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4810, 1, 4815, 1, 1, 1, 4816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4815, 3617, 3618, 3617, 3617, 3617, 3617, 3617, 4817, 1, 3617, 3617, 4818, 3617, 4819, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 25, 4818, 26, 3617, 1, 3617, 24, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3623, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3625, 3624, 3624, 3626, 3627, 3627, 3627, 3628, 1, 4815, 1, 1, 1, 4816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4815, 21, 22, 21, 21, 21, 21, 21, 4817, 1, 21, 21, 4818, 21, 4820, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4818, 26, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4821, 1, 1, 1, 4822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4821, 60, 61, 60, 60, 60, 60, 60, 4823, 1, 60, 60, 4824, 60, 4825, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4824, 65, 60, 1, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4815, 1, 1, 1, 4816, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4815, 3634, 22, 3634, 3634, 3634, 3634, 3634, 4817, 1, 3634, 3634, 4818, 3634, 4820, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 25, 4818, 26, 3634, 1, 3634, 24, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 3634, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3637, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3638, 3639, 3638, 3638, 3640, 3641, 3641, 3641, 3642, 1, 4826, 1, 1, 1, 4827, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4826, 3683, 3618, 3683, 3683, 3683, 3683, 3683, 4828, 1, 3683, 3683, 4818, 3683, 3684, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 25, 4818, 26, 3683, 1, 3683, 24, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 1, 1, 1, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3686, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3688, 3687, 3687, 3689, 3690, 3690, 3690, 3691, 1, 4826, 1, 1, 1, 4827, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4826, 21, 22, 21, 21, 21, 21, 21, 4828, 1, 21, 21, 4818, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4818, 26, 21, 1, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4829, 1, 1, 1, 4830, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4829, 60, 61, 60, 60, 60, 60, 60, 4831, 1, 60, 60, 4824, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4824, 65, 60, 1, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4832, 1, 1, 1, 4833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4832, 3709, 3710, 3709, 3709, 3709, 3709, 3709, 4834, 1, 3709, 3709, 4818, 3709, 3620, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 4818, 1, 3709, 1, 3709, 1, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 1, 1, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3712, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3714, 3713, 3713, 3715, 3716, 3716, 3716, 3717, 1, 4832, 1, 1, 1, 4833, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4832, 1, 1, 1, 1, 1, 1, 1, 4834, 1, 1, 1, 4818, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4818, 1, 4835, 1, 1, 1, 4836, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4835, 1, 1, 1, 1, 1, 1, 1, 4837, 1, 1, 1, 4824, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4824, 1, 4838, 1, 1, 1, 4839, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4838, 3867, 3988, 3867, 3867, 3867, 3867, 3867, 4840, 1, 3867, 3867, 4738, 3867, 4841, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 25, 4738, 26, 3867, 1, 3867, 4777, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3990, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3991, 3869, 3869, 3992, 3993, 3993, 3993, 3994, 1, 4842, 1, 1, 1, 4843, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4842, 21, 22, 21, 21, 21, 21, 21, 4844, 1, 21, 21, 4749, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4749, 26, 21, 1, 21, 4787, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4845, 1, 1, 1, 4846, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4845, 60, 61, 60, 60, 60, 60, 60, 4847, 1, 60, 60, 4791, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4791, 65, 60, 1, 60, 4793, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4848, 1, 1, 1, 4849, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4848, 3867, 3988, 3867, 3867, 3867, 3867, 3867, 4850, 1, 3867, 3867, 4738, 3867, 4841, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 25, 4738, 26, 3867, 1, 3867, 4777, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3990, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3991, 3869, 3869, 3992, 3993, 3993, 3993, 3994, 1, 4851, 1, 1, 1, 4852, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4851, 21, 22, 21, 21, 21, 21, 21, 4853, 1, 21, 21, 4749, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 4749, 8, 21, 1, 21, 4854, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4855, 1, 1, 1, 4856, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4855, 60, 61, 60, 60, 60, 60, 60, 4857, 1, 60, 60, 4791, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 4791, 83, 60, 1, 60, 4858, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4859, 1, 1, 1, 4860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4859, 3820, 3710, 3820, 3820, 3820, 3820, 3820, 4861, 1, 3820, 3820, 4818, 3820, 4862, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 4818, 1, 3820, 1, 3820, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3823, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3825, 3824, 3824, 3826, 3827, 3827, 3827, 3828, 1, 4859, 1, 1, 1, 4860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4859, 1, 1, 1, 1, 1, 1, 1, 4861, 1, 1, 1, 4818, 1, 3832, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4818, 1, 4863, 1, 1, 1, 4864, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4863, 1, 1, 1, 1, 1, 1, 1, 4865, 1, 1, 1, 4824, 1, 3844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4824, 1, 4859, 1, 1, 1, 4860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4859, 3834, 1, 3834, 3834, 3834, 3834, 3834, 4861, 1, 3834, 3834, 4818, 3834, 3832, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 4818, 1, 3834, 1, 3834, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 1, 1, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3837, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3839, 3838, 3838, 3840, 3841, 3841, 3841, 3842, 1, 4866, 1, 1, 1, 4867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4866, 3901, 4868, 3901, 3901, 3901, 3901, 3901, 4869, 1, 3901, 3901, 4738, 3901, 4841, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 25, 4738, 26, 3901, 1, 3901, 4777, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 1, 1, 1, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 4778, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 4779, 3903, 3903, 4780, 4781, 4781, 4781, 4782, 1, 4870, 1, 1, 1, 4871, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4870, 160, 161, 160, 160, 160, 160, 160, 4872, 1, 160, 160, 4749, 160, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 4749, 8, 160, 1, 160, 4854, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 165, 165, 167, 168, 168, 168, 169, 1, 4873, 1, 1, 1, 4874, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4873, 3768, 3769, 3768, 3768, 3768, 3768, 3768, 4875, 1, 3768, 3768, 4791, 3768, 1, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 4791, 83, 3768, 1, 3768, 4858, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 1, 1, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3771, 3772, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3773, 3774, 3773, 3773, 3775, 3776, 3776, 3776, 3777, 1, 4773, 1, 1, 1, 4774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4773, 3867, 3988, 3867, 3867, 3867, 3867, 3867, 4775, 1, 3867, 3867, 4738, 3867, 4776, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 25, 4738, 26, 3867, 1, 3867, 4777, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3990, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3991, 3869, 3869, 3992, 3993, 3993, 3993, 3994, 1, 4876, 1, 1, 1, 4877, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4876, 3867, 3988, 3867, 3867, 3867, 3867, 3867, 4878, 1, 3867, 3867, 4879, 3867, 4776, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 25, 4879, 26, 3867, 1, 3867, 4880, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 3867, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3868, 3990, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3869, 3991, 3869, 3869, 3992, 3993, 3993, 3993, 3994, 1, 4881, 1, 1, 1, 4882, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4881, 21, 22, 21, 21, 21, 21, 21, 4883, 1, 21, 21, 4884, 21, 4786, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4884, 26, 21, 1, 21, 4885, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4886, 1, 1, 1, 4887, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4886, 60, 61, 60, 60, 60, 60, 60, 4888, 1, 60, 60, 4889, 60, 4792, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4889, 65, 60, 1, 60, 4890, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4891, 1, 1, 1, 4892, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4891, 21, 22, 21, 21, 21, 21, 21, 4893, 1, 21, 21, 4894, 21, 4786, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4894, 26, 21, 1, 21, 4895, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4896, 1, 1, 1, 4897, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4896, 60, 61, 60, 60, 60, 60, 60, 4898, 1, 60, 60, 4899, 60, 4792, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4899, 65, 60, 1, 60, 4900, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4901, 1, 1, 1, 4902, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4901, 3963, 3964, 3963, 3963, 3963, 3963, 3963, 4903, 1, 3963, 3963, 4738, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 4738, 1, 3963, 1, 3963, 4904, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 1, 1, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 3963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3967, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3969, 3968, 3968, 3970, 3971, 3971, 3971, 3972, 1, 4905, 1, 1, 1, 4906, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4905, 1, 1, 1, 1, 1, 1, 1, 4907, 1, 1, 1, 4749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4749, 1, 1, 1, 1, 4854, 1, 4908, 1, 1, 1, 4909, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4908, 1, 1, 1, 1, 1, 1, 1, 4910, 1, 1, 1, 4791, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4791, 1, 1, 1, 1, 4858, 1, 4911, 1, 1, 1, 4912, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4911, 60, 61, 60, 60, 60, 60, 60, 4913, 1, 60, 60, 4791, 60, 4914, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4791, 65, 60, 1, 60, 4915, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4916, 1, 1, 1, 4917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4916, 4429, 22, 4429, 4429, 4429, 4429, 4429, 4918, 1, 4429, 4429, 4755, 4429, 4750, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 25, 4755, 26, 4429, 1, 4429, 4919, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4433, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4435, 4434, 4434, 4436, 4437, 4437, 4437, 4438, 1, 4916, 1, 1, 1, 4917, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4916, 21, 22, 21, 21, 21, 21, 21, 4918, 1, 21, 21, 4755, 21, 4750, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4755, 26, 21, 1, 21, 4919, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4920, 1, 1, 1, 4921, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4920, 60, 61, 60, 60, 60, 60, 60, 4922, 1, 60, 60, 4759, 60, 4914, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4759, 65, 60, 1, 60, 4923, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 3719, 1, 1, 1, 4924, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3719, 4457, 4458, 4457, 4457, 4457, 4457, 4457, 4834, 1, 4457, 4457, 4818, 4457, 4451, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 4818, 1, 4457, 1, 4457, 1, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 1, 1, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4459, 4460, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4461, 4462, 4461, 4461, 4463, 4464, 4464, 4464, 4465, 1, 4925, 1, 1, 1, 4926, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4925, 4578, 4688, 4578, 4578, 4578, 4578, 4578, 4927, 1, 4578, 4578, 4738, 4578, 4928, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 25, 4738, 26, 4578, 1, 4578, 4740, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4690, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4691, 4580, 4580, 4692, 4693, 4693, 4693, 4694, 1, 4929, 1, 1, 1, 4930, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4929, 21, 22, 21, 21, 21, 21, 21, 4931, 1, 21, 21, 4749, 21, 24, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4749, 26, 21, 1, 21, 4751, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4932, 1, 1, 1, 4933, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4932, 60, 61, 60, 60, 60, 60, 60, 4934, 1, 60, 60, 4791, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4791, 65, 60, 1, 60, 4915, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4935, 1, 1, 1, 4936, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4935, 4578, 4688, 4578, 4578, 4578, 4578, 4578, 4937, 1, 4578, 4578, 4738, 4578, 4928, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 25, 4738, 26, 4578, 1, 4578, 4740, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4690, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4691, 4580, 4580, 4692, 4693, 4693, 4693, 4694, 1, 4938, 1, 1, 1, 4939, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4938, 21, 22, 21, 21, 21, 21, 21, 4940, 1, 21, 21, 4749, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 4749, 8, 21, 1, 21, 4941, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4942, 1, 1, 1, 4943, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4942, 60, 61, 60, 60, 60, 60, 60, 4944, 1, 60, 60, 4791, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 4791, 83, 60, 1, 60, 4945, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 3831, 1, 1, 1, 4946, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3831, 4556, 4458, 4556, 4556, 4556, 4556, 4556, 4861, 1, 4556, 4556, 4818, 4556, 4947, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 4818, 1, 4556, 1, 4556, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 4556, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4559, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4561, 4560, 4560, 4562, 4563, 4563, 4563, 4564, 1, 4948, 1, 1, 1, 4949, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4948, 4612, 4950, 4612, 4612, 4612, 4612, 4612, 4951, 1, 4612, 4612, 4738, 4612, 4928, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 25, 4738, 26, 4612, 1, 4612, 4740, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 1, 1, 1, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 4612, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4613, 4741, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4614, 4742, 4614, 4614, 4743, 4744, 4744, 4744, 4745, 1, 4952, 1, 1, 1, 4953, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4952, 4429, 4430, 4429, 4429, 4429, 4429, 4429, 4954, 1, 4429, 4429, 4749, 4429, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 4749, 8, 4429, 1, 4429, 4941, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4433, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4435, 4434, 4434, 4436, 4437, 4437, 4437, 4438, 1, 4955, 1, 1, 1, 4956, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4955, 4504, 4505, 4504, 4504, 4504, 4504, 4504, 4957, 1, 4504, 4504, 4791, 4504, 1, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 4791, 83, 4504, 1, 4504, 4945, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 1, 1, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 4504, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4508, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4510, 4509, 4509, 4511, 4512, 4512, 4512, 4513, 1, 4735, 1, 1, 1, 4736, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4735, 4578, 4688, 4578, 4578, 4578, 4578, 4578, 4737, 1, 4578, 4578, 4738, 4578, 4739, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 25, 4738, 26, 4578, 1, 4578, 4740, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4690, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4691, 4580, 4580, 4692, 4693, 4693, 4693, 4694, 1, 4958, 1, 1, 1, 4959, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4958, 4578, 4688, 4578, 4578, 4578, 4578, 4578, 4960, 1, 4578, 4578, 4879, 4578, 4739, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 25, 4879, 26, 4578, 1, 4578, 4961, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4690, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4691, 4580, 4580, 4692, 4693, 4693, 4693, 4694, 1, 4962, 1, 1, 1, 4963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4962, 21, 22, 21, 21, 21, 21, 21, 4964, 1, 21, 21, 4884, 21, 4750, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4884, 26, 21, 1, 21, 4965, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4966, 1, 1, 1, 4967, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4966, 60, 61, 60, 60, 60, 60, 60, 4968, 1, 60, 60, 4889, 60, 4914, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4889, 65, 60, 1, 60, 4969, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4970, 1, 1, 1, 4971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4970, 21, 22, 21, 21, 21, 21, 21, 4972, 1, 21, 21, 4894, 21, 4750, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 25, 4894, 26, 21, 1, 21, 4973, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 4974, 1, 1, 1, 4975, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4974, 60, 61, 60, 60, 60, 60, 60, 4976, 1, 60, 60, 4899, 60, 4914, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 64, 4899, 65, 60, 1, 60, 4977, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 68, 68, 70, 71, 71, 71, 72, 1, 4978, 1, 1, 1, 4979, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4978, 4663, 4664, 4663, 4663, 4663, 4663, 4663, 4980, 1, 4663, 4663, 4738, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 4738, 1, 4663, 1, 4663, 4981, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 1, 1, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4667, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4669, 4668, 4668, 4670, 4671, 4671, 4671, 4672, 1, 4982, 1, 1, 1, 4983, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4982, 1, 1, 1, 1, 1, 1, 1, 4984, 1, 1, 1, 4749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4749, 1, 1, 1, 1, 4941, 1, 4985, 1, 1, 1, 4986, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4985, 1, 1, 1, 1, 1, 1, 1, 4987, 1, 1, 1, 4791, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4791, 1, 1, 1, 1, 4945, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 1, 0, 2, 2462, 2401, 2420, 2466, 2424, 27, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 3, 5, 2463, 6, 7, 6, 9, 21, 22, 56, 27, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 8, 10, 11, 6, 13, 14, 15, 16, 17, 18, 19, 20, 10, 11, 6, 13, 14, 15, 16, 17, 18, 19, 20, 12, 6, 7, 6, 9, 21, 22, 56, 27, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 23, 24, 26, 23, 24, 26, 25, 23, 24, 26, 27, 28, 29, 31, 2178, 2202, 2203, 2225, 2207, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 28, 29, 2202, 2203, 2207, 30, 32, 33, 31, 2124, 35, 2150, 2464, 2036, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 32, 33, 35, 36, 2464, 2036, 34, 32, 33, 35, 36, 2464, 2036, 37, 39, 2111, 2123, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 38, 40, 41, 43, 2036, 42, 40, 41, 43, 2036, 45, 47, 49, 2468, 51, 52, 2470, 1899, 1911, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 51, 52, 1911, 53, 55, 2471, 57, 58, 60, 110, 1792, 1793, 1542, 2476, 85, 80, 914, 915, 916, 917, 918, 919, 920, 57, 58, 60, 110, 1792, 1515, 85, 914, 915, 916, 917, 918, 919, 920, 59, 61, 62, 60, 835, 902, 106, 892, 2473, 85, 706, 914, 915, 916, 917, 918, 919, 920, 61, 62, 64, 67, 902, 106, 119, 2473, 706, 728, 729, 730, 731, 732, 733, 734, 63, 61, 64, 65, 79, 80, 66, 68, 69, 64, 71, 72, 73, 74, 75, 76, 77, 78, 68, 69, 64, 71, 72, 73, 74, 75, 76, 77, 78, 70, 64, 65, 64, 67, 79, 80, 85, 728, 729, 730, 731, 732, 733, 734, 81, 82, 84, 81, 82, 84, 83, 81, 82, 84, 85, 86, 87, 89, 1685, 1709, 1710, 1732, 1714, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 86, 87, 1709, 1710, 1714, 88, 90, 91, 89, 1631, 93, 1657, 102, 1543, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 90, 91, 93, 94, 102, 1543, 92, 90, 91, 93, 94, 102, 1543, 95, 97, 1618, 1630, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 96, 98, 99, 101, 1543, 100, 98, 99, 101, 1543, 103, 105, 106, 2473, 104, 103, 105, 106, 2473, 107, 108, 936, 937, 107, 108, 936, 109, 111, 929, 930, 932, 921, 922, 923, 924, 925, 926, 927, 928, 111, 112, 114, 921, 922, 923, 924, 925, 926, 927, 928, 113, 115, 116, 830, 118, 106, 2473, 706, 885, 886, 887, 888, 889, 890, 891, 115, 116, 118, 106, 2473, 706, 117, 115, 115, 116, 118, 106, 119, 2473, 706, 120, 121, 123, 817, 829, 810, 811, 812, 813, 814, 815, 816, 120, 121, 829, 122, 124, 125, 127, 706, 126, 124, 124, 125, 127, 706, 129, 2474, 131, 132, 130, 327, 394, 176, 384, 155, 198, 406, 407, 408, 409, 410, 411, 412, 131, 132, 134, 137, 394, 176, 189, 198, 220, 221, 222, 223, 224, 225, 226, 133, 131, 134, 135, 149, 150, 136, 138, 139, 134, 141, 142, 143, 144, 145, 146, 147, 148, 138, 139, 134, 141, 142, 143, 144, 145, 146, 147, 148, 140, 134, 135, 134, 137, 149, 150, 155, 220, 221, 222, 223, 224, 225, 226, 151, 152, 154, 151, 152, 154, 155, 153, 151, 152, 154, 155, 156, 157, 159, 599, 623, 624, 646, 628, 592, 593, 594, 595, 596, 597, 598, 156, 157, 623, 624, 628, 158, 160, 161, 159, 545, 163, 571, 172, 457, 592, 593, 594, 595, 596, 597, 598, 160, 161, 163, 164, 172, 457, 162, 160, 161, 163, 164, 172, 457, 165, 167, 532, 544, 525, 526, 527, 528, 529, 530, 531, 166, 168, 169, 171, 457, 170, 168, 169, 171, 457, 173, 175, 176, 174, 173, 175, 176, 177, 178, 130, 180, 428, 456, 155, 150, 406, 407, 408, 409, 410, 411, 412, 177, 178, 130, 180, 428, 429, 406, 407, 408, 409, 410, 411, 412, 179, 181, 421, 422, 424, 413, 414, 415, 416, 417, 418, 419, 420, 181, 182, 184, 413, 414, 415, 416, 417, 418, 419, 420, 183, 185, 186, 322, 188, 176, 198, 377, 378, 379, 380, 381, 382, 383, 185, 186, 188, 176, 198, 187, 185, 185, 186, 188, 176, 189, 198, 190, 191, 193, 309, 321, 302, 303, 304, 305, 306, 307, 308, 190, 191, 321, 192, 194, 195, 197, 198, 196, 194, 194, 195, 197, 198, 199, 200, 202, 227, 263, 236, 291, 256, 257, 258, 259, 260, 261, 262, 199, 200, 202, 227, 263, 264, 291, 256, 257, 258, 259, 260, 261, 262, 201, 203, 204, 206, 176, 255, 2473, 207, 205, 203, 203, 204, 206, 176, 207, 2473, 208, 209, 211, 219, 212, 213, 214, 215, 216, 217, 218, 208, 209, 219, 210, 208, 209, 211, 219, 212, 213, 214, 215, 216, 217, 218, 228, 252, 253, 244, 245, 246, 247, 248, 249, 250, 251, 228, 229, 231, 244, 245, 246, 247, 248, 249, 250, 251, 230, 232, 233, 231, 235, 236, 237, 238, 239, 240, 241, 242, 243, 234, 232, 232, 233, 235, 252, 253, 254, 199, 200, 202, 227, 263, 264, 291, 256, 257, 258, 259, 260, 261, 262, 265, 270, 284, 285, 286, 287, 288, 289, 290, 266, 267, 269, 268, 266, 267, 269, 271, 282, 274, 275, 276, 277, 278, 279, 280, 281, 272, 273, 283, 292, 294, 295, 296, 297, 298, 299, 300, 301, 293, 310, 311, 194, 313, 314, 315, 316, 317, 318, 319, 320, 310, 311, 194, 313, 314, 315, 316, 317, 318, 319, 320, 312, 190, 191, 193, 309, 321, 302, 303, 304, 305, 306, 307, 308, 323, 324, 326, 342, 323, 324, 326, 325, 323, 323, 324, 326, 176, 2473, 198, 328, 339, 340, 331, 332, 333, 334, 335, 336, 337, 338, 328, 329, 322, 331, 332, 333, 334, 335, 336, 337, 338, 330, 339, 340, 341, 343, 344, 346, 343, 344, 346, 347, 345, 343, 344, 346, 347, 348, 349, 351, 270, 376, 264, 369, 370, 371, 372, 373, 374, 375, 348, 349, 351, 376, 369, 370, 371, 372, 373, 374, 375, 350, 352, 353, 355, 368, 356, 354, 352, 353, 355, 356, 357, 359, 367, 360, 361, 362, 363, 364, 365, 366, 358, 357, 359, 367, 360, 361, 362, 363, 364, 365, 366, 348, 349, 351, 270, 376, 369, 370, 371, 372, 373, 374, 375, 385, 386, 389, 388, 385, 386, 388, 387, 385, 386, 388, 390, 403, 404, 395, 396, 397, 398, 399, 400, 401, 402, 390, 391, 393, 395, 396, 397, 398, 399, 400, 401, 402, 392, 131, 132, 394, 403, 404, 405, 421, 422, 424, 423, 424, 425, 427, 176, 2473, 198, 426, 424, 424, 425, 427, 176, 2473, 198, 177, 178, 130, 180, 428, 429, 406, 407, 408, 409, 410, 411, 412, 430, 435, 429, 449, 450, 451, 452, 453, 454, 455, 431, 432, 434, 347, 431, 432, 434, 433, 431, 432, 434, 436, 447, 439, 440, 441, 442, 443, 444, 445, 446, 437, 438, 448, 456, 458, 459, 461, 478, 513, 487, 514, 506, 507, 508, 509, 510, 511, 512, 458, 459, 461, 478, 513, 487, 514, 506, 507, 508, 509, 510, 511, 512, 460, 462, 463, 465, 505, 172, 466, 464, 462, 463, 465, 466, 172, 467, 469, 477, 470, 471, 472, 473, 474, 475, 476, 468, 467, 469, 477, 470, 471, 472, 473, 474, 475, 476, 479, 503, 495, 496, 497, 498, 499, 500, 501, 502, 480, 482, 481, 483, 484, 486, 488, 489, 490, 491, 492, 493, 494, 485, 483, 484, 486, 504, 458, 459, 461, 478, 513, 487, 514, 506, 507, 508, 509, 510, 511, 512, 515, 517, 518, 519, 520, 521, 522, 523, 524, 516, 533, 534, 168, 536, 537, 538, 539, 540, 541, 542, 543, 533, 534, 168, 536, 537, 538, 539, 540, 541, 542, 543, 535, 165, 167, 532, 544, 525, 526, 527, 528, 529, 530, 531, 546, 569, 561, 562, 563, 564, 565, 566, 567, 568, 547, 549, 548, 550, 551, 553, 554, 555, 556, 557, 558, 559, 560, 550, 551, 553, 552, 550, 551, 553, 570, 572, 573, 576, 575, 572, 573, 575, 574, 572, 573, 575, 577, 589, 590, 581, 582, 583, 584, 585, 586, 587, 588, 577, 578, 580, 581, 582, 583, 584, 585, 586, 587, 588, 579, 589, 590, 591, 600, 616, 617, 619, 608, 609, 610, 611, 612, 613, 614, 615, 600, 601, 603, 608, 609, 610, 611, 612, 613, 614, 615, 602, 604, 605, 607, 457, 604, 605, 607, 457, 606, 604, 605, 607, 457, 616, 617, 619, 618, 619, 620, 622, 457, 621, 619, 620, 622, 457, 156, 157, 159, 599, 623, 624, 646, 628, 592, 593, 594, 595, 596, 597, 598, 625, 627, 626, 625, 627, 629, 630, 632, 659, 694, 668, 695, 687, 688, 689, 690, 691, 692, 693, 629, 630, 632, 659, 694, 668, 695, 687, 688, 689, 690, 691, 692, 693, 631, 633, 634, 636, 637, 686, 641, 647, 635, 633, 634, 636, 637, 647, 641, 637, 638, 640, 641, 639, 637, 638, 640, 641, 642, 643, 159, 599, 645, 646, 592, 593, 594, 595, 596, 597, 598, 642, 643, 645, 644, 642, 643, 645, 646, 648, 650, 658, 651, 652, 653, 654, 655, 656, 657, 649, 648, 650, 658, 651, 652, 653, 654, 655, 656, 657, 660, 684, 676, 677, 678, 679, 680, 681, 682, 683, 661, 663, 662, 664, 665, 667, 669, 670, 671, 672, 673, 674, 675, 666, 664, 665, 667, 685, 629, 630, 632, 659, 694, 668, 695, 687, 688, 689, 690, 691, 692, 693, 696, 698, 699, 700, 701, 702, 703, 704, 705, 697, 707, 708, 710, 735, 771, 744, 799, 764, 765, 766, 767, 768, 769, 770, 707, 708, 710, 735, 771, 772, 799, 764, 765, 766, 767, 768, 769, 770, 709, 711, 712, 714, 106, 763, 715, 713, 711, 711, 712, 714, 106, 715, 716, 717, 719, 727, 720, 721, 722, 723, 724, 725, 726, 716, 717, 727, 718, 716, 717, 719, 727, 720, 721, 722, 723, 724, 725, 726, 736, 760, 761, 752, 753, 754, 755, 756, 757, 758, 759, 736, 737, 739, 752, 753, 754, 755, 756, 757, 758, 759, 738, 740, 741, 739, 743, 744, 745, 746, 747, 748, 749, 750, 751, 742, 740, 740, 741, 743, 760, 761, 762, 707, 708, 710, 735, 771, 772, 799, 764, 765, 766, 767, 768, 769, 770, 773, 778, 792, 793, 794, 795, 796, 797, 798, 774, 775, 777, 776, 774, 775, 777, 779, 790, 782, 783, 784, 785, 786, 787, 788, 789, 780, 781, 791, 800, 802, 803, 804, 805, 806, 807, 808, 809, 801, 818, 819, 124, 821, 822, 823, 824, 825, 826, 827, 828, 818, 819, 124, 821, 822, 823, 824, 825, 826, 827, 828, 820, 120, 121, 123, 817, 829, 810, 811, 812, 813, 814, 815, 816, 831, 832, 834, 850, 831, 832, 834, 833, 831, 831, 832, 834, 106, 706, 836, 847, 848, 839, 840, 841, 842, 843, 844, 845, 846, 836, 837, 830, 839, 840, 841, 842, 843, 844, 845, 846, 838, 847, 848, 849, 851, 852, 854, 851, 852, 854, 855, 853, 851, 852, 854, 855, 856, 857, 859, 778, 884, 772, 877, 878, 879, 880, 881, 882, 883, 856, 857, 859, 884, 877, 878, 879, 880, 881, 882, 883, 858, 860, 861, 863, 876, 864, 862, 860, 861, 863, 864, 865, 867, 875, 868, 869, 870, 871, 872, 873, 874, 866, 865, 867, 875, 868, 869, 870, 871, 872, 873, 874, 856, 857, 859, 778, 884, 877, 878, 879, 880, 881, 882, 883, 893, 894, 897, 896, 893, 894, 896, 895, 893, 894, 896, 898, 911, 912, 903, 904, 905, 906, 907, 908, 909, 910, 898, 899, 901, 903, 904, 905, 906, 907, 908, 909, 910, 900, 61, 62, 902, 911, 912, 913, 929, 930, 932, 931, 932, 933, 935, 106, 706, 934, 932, 932, 933, 935, 106, 706, 107, 108, 60, 110, 936, 937, 1515, 2476, 914, 915, 916, 917, 918, 919, 920, 938, 939, 941, 1462, 1486, 1514, 966, 961, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 938, 939, 941, 1462, 1486, 1487, 966, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 940, 942, 943, 941, 1372, 1245, 937, 1434, 2476, 966, 1255, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 942, 943, 945, 948, 1245, 937, 1246, 2476, 1255, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 944, 942, 945, 946, 960, 961, 947, 949, 950, 945, 952, 953, 954, 955, 956, 957, 958, 959, 949, 950, 945, 952, 953, 954, 955, 956, 957, 958, 959, 951, 945, 946, 945, 948, 960, 961, 966, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 962, 963, 965, 962, 963, 965, 964, 962, 963, 965, 966, 967, 968, 970, 1131, 1155, 1156, 1178, 1160, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 967, 968, 1155, 1156, 1160, 969, 971, 972, 970, 1077, 974, 1103, 983, 989, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 971, 972, 974, 975, 983, 989, 973, 971, 972, 974, 975, 983, 989, 976, 978, 1064, 1076, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 977, 979, 980, 982, 989, 981, 979, 980, 982, 989, 984, 986, 937, 2476, 985, 984, 986, 937, 2476, 988, 990, 991, 993, 1010, 1045, 1019, 1046, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 990, 991, 993, 1010, 1045, 1019, 1046, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 992, 994, 995, 997, 1037, 983, 998, 996, 994, 995, 997, 998, 983, 999, 1001, 1009, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1000, 999, 1001, 1009, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1011, 1035, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1012, 1014, 1013, 1015, 1016, 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1017, 1015, 1016, 1018, 1036, 990, 991, 993, 1010, 1045, 1019, 1046, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1047, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1048, 1065, 1066, 979, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1065, 1066, 979, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1067, 976, 978, 1064, 1076, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1078, 1101, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1079, 1081, 1080, 1082, 1083, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1082, 1083, 1085, 1084, 1082, 1083, 1085, 1102, 1104, 1105, 1108, 1107, 1104, 1105, 1107, 1106, 1104, 1105, 1107, 1109, 1121, 1122, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1109, 1110, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1111, 1121, 1122, 1123, 1132, 1148, 1149, 1151, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1132, 1133, 1135, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1134, 1136, 1137, 1139, 989, 1136, 1137, 1139, 989, 1138, 1136, 1137, 1139, 989, 1148, 1149, 1151, 1150, 1151, 1152, 1154, 989, 1153, 1151, 1152, 1154, 989, 967, 968, 970, 1131, 1155, 1156, 1178, 1160, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1157, 1159, 1158, 1157, 1159, 1161, 1162, 1164, 1191, 1226, 1200, 1227, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1161, 1162, 1164, 1191, 1226, 1200, 1227, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1163, 1165, 1166, 1168, 1169, 1218, 1173, 1179, 1167, 1165, 1166, 1168, 1169, 1179, 1173, 1169, 1170, 1172, 1173, 1171, 1169, 1170, 1172, 1173, 1174, 1175, 970, 1131, 1177, 1178, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1174, 1175, 1177, 1176, 1174, 1175, 1177, 1178, 1180, 1182, 1190, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1181, 1180, 1182, 1190, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1192, 1216, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1193, 1195, 1194, 1196, 1197, 1199, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1198, 1196, 1197, 1199, 1217, 1161, 1162, 1164, 1191, 1226, 1200, 1227, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1228, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1229, 942, 943, 1245, 937, 1246, 2476, 1255, 1247, 1248, 1250, 1359, 1371, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1247, 1248, 1371, 1249, 1251, 1252, 1254, 1255, 1253, 1251, 1251, 1252, 1254, 1255, 1256, 1257, 1259, 1277, 1313, 1286, 1341, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1256, 1257, 1259, 1277, 1313, 1314, 1341, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1258, 1260, 1261, 1263, 937, 1305, 2476, 1264, 1262, 1260, 1260, 1261, 1263, 937, 1264, 2476, 1265, 1266, 1268, 1276, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1265, 1266, 1276, 1267, 1265, 1266, 1268, 1276, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1278, 1302, 1303, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1278, 1279, 1281, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1280, 1282, 1283, 1281, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1284, 1282, 1282, 1283, 1285, 1302, 1303, 1304, 1256, 1257, 1259, 1277, 1313, 1314, 1341, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1315, 1320, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1316, 1317, 1319, 1318, 1316, 1317, 1319, 1321, 1332, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1322, 1323, 1333, 1342, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1343, 1360, 1361, 1251, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1360, 1361, 1251, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1362, 1247, 1248, 1250, 1359, 1371, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1373, 1431, 1432, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1373, 1374, 1376, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1375, 1377, 1378, 1376, 1380, 1381, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1377, 1378, 1380, 1379, 1377, 1377, 1378, 1380, 1382, 1383, 1385, 1382, 1383, 1385, 1386, 1384, 1382, 1383, 1385, 1386, 1387, 1388, 1390, 1320, 1415, 1314, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1387, 1388, 1390, 1415, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1389, 1391, 1392, 1394, 1407, 1395, 1393, 1391, 1392, 1394, 1395, 1396, 1398, 1406, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1397, 1396, 1398, 1406, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1387, 1388, 1390, 1320, 1415, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1431, 1432, 1433, 1435, 1436, 1439, 1438, 1435, 1436, 1438, 1437, 1435, 1436, 1438, 1440, 1452, 1453, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1440, 1441, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1442, 1452, 1453, 1454, 1463, 1479, 1480, 1482, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1463, 1464, 1466, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1465, 1467, 1468, 1470, 937, 2476, 1255, 1467, 1468, 1470, 937, 2476, 1255, 1469, 1467, 1467, 1468, 1470, 937, 2476, 1255, 1479, 1480, 1482, 1481, 1482, 1483, 1485, 937, 2476, 1255, 1484, 1482, 1482, 1483, 1485, 937, 2476, 1255, 938, 939, 941, 1462, 1486, 1487, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1488, 1493, 1487, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1489, 1490, 1492, 1386, 1489, 1490, 1492, 1491, 1489, 1490, 1492, 1494, 1505, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1495, 1496, 1506, 1514, 1516, 1521, 1515, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1517, 1518, 1520, 855, 1517, 1518, 1520, 1519, 1517, 1518, 1520, 1522, 1533, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1523, 1524, 1534, 1542, 1544, 1545, 1547, 1564, 1599, 1573, 1600, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1544, 1545, 1547, 1564, 1599, 1573, 1600, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1546, 1548, 1549, 1551, 1591, 102, 1552, 1550, 1548, 1549, 1551, 1552, 102, 1553, 1555, 1563, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1554, 1553, 1555, 1563, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1565, 1589, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1566, 1568, 1567, 1569, 1570, 1572, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1571, 1569, 1570, 1572, 1590, 1544, 1545, 1547, 1564, 1599, 1573, 1600, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1601, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1602, 1619, 1620, 98, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1619, 1620, 98, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1621, 95, 97, 1618, 1630, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1632, 1655, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1633, 1635, 1634, 1636, 1637, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1636, 1637, 1639, 1638, 1636, 1637, 1639, 1656, 1658, 1659, 1662, 1661, 1658, 1659, 1661, 1660, 1658, 1659, 1661, 1663, 1675, 1676, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1663, 1664, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1665, 1675, 1676, 1677, 1686, 1702, 1703, 1705, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1686, 1687, 1689, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1688, 1690, 1691, 1693, 1543, 1690, 1691, 1693, 1543, 1692, 1690, 1691, 1693, 1543, 1702, 1703, 1705, 1704, 1705, 1706, 1708, 1543, 1707, 1705, 1706, 1708, 1543, 86, 87, 89, 1685, 1709, 1710, 1732, 1714, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1711, 1713, 1712, 1711, 1713, 1715, 1716, 1718, 1745, 1780, 1754, 1781, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1715, 1716, 1718, 1745, 1780, 1754, 1781, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1717, 1719, 1720, 1722, 1723, 1772, 1727, 1733, 1721, 1719, 1720, 1722, 1723, 1733, 1727, 1723, 1724, 1726, 1727, 1725, 1723, 1724, 1726, 1727, 1728, 1729, 89, 1685, 1731, 1732, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1728, 1729, 1731, 1730, 1728, 1729, 1731, 1732, 1734, 1736, 1744, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1735, 1734, 1736, 1744, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1746, 1770, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1747, 1749, 1748, 1750, 1751, 1753, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1752, 1750, 1751, 1753, 1771, 1715, 1716, 1718, 1745, 1780, 1754, 1781, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1782, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1783, 57, 58, 1792, 1793, 1794, 1795, 1797, 1794, 1795, 1797, 1796, 1794, 1795, 1797, 1799, 1800, 2478, 1823, 1856, 1829, 1881, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1799, 1800, 2478, 1823, 1856, 1857, 1881, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1801, 1803, 2479, 1805, 1806, 2481, 1815, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1805, 1806, 1815, 1807, 1805, 1806, 2481, 1815, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1824, 1845, 1846, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1824, 1825, 2482, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1826, 1828, 2483, 2482, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1845, 1846, 1847, 1799, 1800, 2478, 1823, 1856, 1857, 1881, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 2485, 1860, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1859, 2486, 1861, 1872, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1862, 1863, 1873, 1882, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1883, 1900, 1901, 2471, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1900, 1901, 2471, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1902, 51, 52, 2470, 1899, 1911, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1913, 1961, 1962, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1913, 1914, 2488, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1915, 1917, 2489, 1919, 2492, 1921, 1922, 2494, 1860, 1945, 1857, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1921, 1922, 2494, 1945, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1923, 1925, 2495, 1926, 1927, 2497, 1936, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1928, 1926, 1927, 2497, 1936, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1921, 1922, 2494, 1860, 1945, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 2488, 1946, 1948, 1961, 1962, 1963, 1965, 2499, 1967, 1978, 1979, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1967, 1968, 2501, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1969, 1978, 1979, 1980, 2467, 1981, 1983, 1989, 2002, 2003, 2505, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 1989, 1990, 2502, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 1991, 1993, 2503, 2002, 2003, 2505, 2004, 2006, 2505, 2008, 2009, 2467, 1988, 2007, 2011, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2008, 2009, 2467, 1988, 2007, 2011, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2010, 2507, 2014, 2011, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2013, 2508, 2015, 2026, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2016, 2017, 2027, 1912, 2035, 1947, 1949, 1950, 1951, 1952, 2037, 2038, 2040, 2057, 2092, 2066, 2093, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2037, 2038, 2040, 2057, 2092, 2066, 2093, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2039, 2041, 2042, 2044, 2084, 2464, 2045, 2043, 2041, 2042, 2044, 2045, 2464, 2046, 2048, 2056, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2047, 2046, 2048, 2056, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2058, 2082, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2059, 2061, 2060, 2062, 2063, 2065, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2064, 2062, 2063, 2065, 2083, 2037, 2038, 2040, 2057, 2092, 2066, 2093, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2094, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2095, 2112, 2113, 40, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2112, 2113, 40, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2114, 37, 39, 2111, 2123, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2125, 2148, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2126, 2128, 2127, 2129, 2130, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2129, 2130, 2132, 2131, 2129, 2130, 2132, 2149, 2151, 2152, 2155, 2154, 2151, 2152, 2154, 2153, 2151, 2152, 2154, 2156, 2168, 2169, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2156, 2157, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2158, 2168, 2169, 2170, 2179, 2195, 2196, 2198, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2179, 2180, 2182, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2181, 2183, 2184, 2186, 2036, 2183, 2184, 2186, 2036, 2185, 2183, 2184, 2186, 2036, 2195, 2196, 2198, 2197, 2198, 2199, 2201, 2036, 2200, 2198, 2199, 2201, 2036, 28, 29, 31, 2178, 2202, 2203, 2225, 2207, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2204, 2206, 2205, 2204, 2206, 2208, 2209, 2211, 2238, 2273, 2247, 2274, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2208, 2209, 2211, 2238, 2273, 2247, 2274, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2210, 2212, 2213, 2215, 2216, 2265, 2220, 2226, 2214, 2212, 2213, 2215, 2216, 2226, 2220, 2216, 2217, 2219, 2220, 2218, 2216, 2217, 2219, 2220, 2221, 2222, 31, 2178, 2224, 2225, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2221, 2222, 2224, 2223, 2221, 2222, 2224, 2225, 2227, 2229, 2237, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2228, 2227, 2229, 2237, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2239, 2263, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2240, 2242, 2241, 2243, 2244, 2246, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2245, 2243, 2244, 2246, 2264, 2208, 2209, 2211, 2238, 2273, 2247, 2274, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2275, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2276, 2286, 2287, 2511, 2325, 2337, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2286, 2287, 2337, 2288, 2290, 2512, 2292, 2293, 2295, 2292, 2293, 2295, 2296, 2294, 2292, 2293, 2295, 2296, 2514, 2297, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2298, 2309, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2299, 2300, 2310, 2326, 2327, 2512, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2326, 2327, 2512, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2328, 2286, 2287, 2511, 2325, 2337, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2339, 2374, 2375, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2339, 2340, 2515, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2341, 2343, 2516, 2345, 2519, 2347, 2348, 2521, 2297, 2358, 2296, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2347, 2348, 2521, 2358, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2349, 2347, 2348, 2521, 2297, 2358, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2515, 2359, 2361, 2374, 2375, 2376, 2378, 2523, 2380, 2391, 2392, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2380, 2381, 2525, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2382, 2391, 2392, 2393, 2462, 2394, 2396, 2402, 2415, 2416, 2529, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2402, 2403, 2526, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2404, 2406, 2527, 2415, 2416, 2529, 2417, 2419, 2529, 2421, 2422, 2462, 2401, 2420, 2424, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2421, 2422, 2423, 2531, 2427, 2424, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2426, 2532, 2428, 2439, 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2429, 2430, 2440, 2338, 2448, 2360, 2362, 2363, 2364, 2365, 2450, 2451, 2450, 2534, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2450, 2451, 2450, 2534, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2452, 1, 2, 2462, 2401, 2420, 2448, 27, 22, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2463, 4, 2510, 2466, 2522, 2291, 2395, 2397, 2398, 2399, 2400, 2463, 4, 2510, 2466, 2285, 2291, 2464, 44, 2465, 2466, 2464, 44, 2465, 2466, 2466, 46, 2467, 1988, 2007, 2035, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 2468, 48, 2469, 2498, 1798, 1982, 1984, 1985, 1986, 1987, 2468, 48, 2469, 50, 1798, 2468, 48, 2469, 2466, 50, 1798, 2471, 54, 2472, 1798, 2471, 54, 2472, 1798, 2474, 128, 2475, 128, 2475, 2474, 128, 2475, 2466, 987, 2477, 987, 2477, 2479, 1802, 2480, 2466, 1848, 1804, 2479, 1802, 2480, 2466, 1804, 2483, 1827, 2484, 2483, 1827, 2484, 2486, 1858, 2487, 2486, 1858, 2487, 2489, 1916, 2490, 2491, 2489, 1916, 2490, 2489, 1916, 2490, 2492, 1918, 2493, 2492, 1918, 2493, 1920, 2492, 1918, 2493, 1920, 2495, 1924, 2496, 1937, 2495, 1924, 2496, 2499, 1964, 1966, 2500, 2499, 1964, 2500, 2499, 1964, 2500, 2503, 1992, 2504, 2466, 1798, 2503, 1992, 2504, 2466, 1798, 2503, 1992, 2504, 2466, 1798, 2505, 2005, 2506, 2466, 1798, 2505, 2005, 2506, 2466, 1798, 2508, 2012, 2509, 1920, 2508, 2012, 2509, 2508, 2012, 2509, 2463, 4, 2510, 2285, 2291, 2512, 2289, 2513, 2291, 2512, 2289, 2513, 2291, 1858, 2516, 2342, 2517, 2518, 2516, 2342, 2517, 2516, 2342, 2517, 2519, 2344, 2520, 2519, 2344, 2520, 2346, 2519, 2344, 2520, 2346, 1924, 2350, 2523, 2377, 2379, 2524, 2523, 2377, 2524, 2523, 2377, 2524, 2527, 2405, 2528, 2291, 2527, 2405, 2528, 2291, 2527, 2405, 2528, 2291, 2529, 2418, 2530, 2291, 2529, 2418, 2530, 2291, 2532, 2425, 2533, 2346, 2532, 2425, 2533, 2532, 2425, 2533, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 0, 0, 0, 1, 1, 2, 0, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 4, 4, 0, 0, 5, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 13, 12, 14, 15, 12, 12, 12, 12, 12, 12, 12, 4, 4, 5, 0, 0, 2, 0, 12, 12, 16, 17, 18, 18, 1, 1, 19, 20, 1, 20, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 21, 21, 0, 0, 22, 0, 21, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 24, 0, 12, 12, 16, 12, 12, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 12, 12, 16, 12, 0, 0, 0, 0, 4, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 26, 26, 26, 26, 27, 0, 26, 0, 28, 29, 26, 26, 26, 26, 26, 26, 26, 0, 0, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 30, 30, 0, 0, 31, 32, 0, 32, 7, 23, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 5, 33, 0, 33, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 13, 12, 15, 12, 12, 12, 12, 12, 12, 12, 4, 4, 5, 0, 0, 2, 0, 12, 12, 16, 17, 18, 18, 1, 1, 19, 20, 1, 20, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 21, 21, 0, 0, 22, 0, 21, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 24, 0, 12, 12, 16, 12, 12, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 12, 12, 16, 12, 0, 2, 34, 34, 0, 12, 16, 35, 35, 26, 26, 27, 0, 0, 0, 2, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 0, 31, 36, 36, 37, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 38, 38, 39, 0, 0, 11, 11, 13, 40, 12, 40, 41, 4, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4, 5, 0, 0, 0, 11, 11, 13, 12, 0, 0, 30, 30, 0, 0, 31, 32, 0, 7, 23, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 5, 33, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 13, 12, 15, 12, 12, 12, 12, 12, 12, 12, 4, 4, 5, 0, 0, 2, 3, 0, 12, 12, 16, 17, 18, 18, 1, 1, 19, 20, 1, 20, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 21, 21, 0, 0, 22, 0, 21, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 24, 0, 12, 12, 16, 12, 12, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 12, 12, 16, 12, 0, 2, 34, 0, 12, 16, 35, 26, 26, 26, 26, 27, 26, 28, 29, 26, 26, 26, 26, 26, 26, 26, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 0, 31, 36, 37, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 38, 39, 0, 0, 11, 11, 13, 40, 12, 41, 4, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4, 5, 0, 0, 0, 11, 11, 13, 12, 42, 42, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 45, 0, 45, 0, 0, 0, 11, 11, 13, 46, 12, 46, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 30, 30, 31, 0, 4, 4, 5, 0, 0, 11, 11, 13, 47, 47, 25, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 31, 0, 0, 2, 24, 0, 12, 12, 16, 25, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 12, 16, 12, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 30, 30, 0, 31, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 0, 0, 0, 0, 0, 10, 0, 4, 4, 5, 49, 49, 50, 0, 0, 11, 11, 13, 51, 51, 52, 12, 12, 53, 53, 16, 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 23, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 54, 0, 0, 12, 12, 16, 12, 55, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 21, 21, 0, 22, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 37, 0, 0, 2, 39, 0, 12, 12, 16, 41, 0, 0, 10, 0, 0, 0, 2, 50, 0, 12, 12, 16, 52, 12, 12, 53, 53, 16, 12, 53, 12, 53, 53, 53, 53, 53, 53, 53, 0, 2, 0, 12, 16, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 54, 0, 54, 0, 0, 12, 12, 16, 55, 12, 55, 0, 0, 2, 0, 0, 12, 12, 16, 12, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 45, 0, 0, 0, 0, 11, 11, 13, 46, 12, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 30, 30, 31, 0, 4, 4, 5, 0, 0, 11, 11, 13, 47, 25, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 31, 0, 0, 2, 24, 0, 12, 12, 16, 25, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 12, 16, 12, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 30, 30, 0, 31, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 0, 0, 0, 0, 0, 10, 0, 4, 4, 5, 49, 50, 0, 0, 11, 11, 13, 51, 52, 12, 12, 53, 53, 16, 12, 53, 12, 53, 53, 53, 53, 53, 53, 53, 26, 26, 26, 26, 27, 26, 28, 29, 26, 26, 26, 26, 26, 26, 26, 0, 0, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 30, 30, 0, 0, 31, 32, 0, 32, 7, 23, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 5, 33, 0, 33, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 12, 12, 13, 12, 15, 12, 12, 12, 12, 12, 12, 12, 4, 4, 5, 0, 0, 2, 0, 12, 12, 16, 17, 18, 18, 1, 1, 19, 20, 1, 20, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 0, 0, 0, 21, 21, 0, 0, 22, 0, 21, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 24, 0, 12, 12, 16, 12, 12, 25, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 12, 12, 16, 12, 0, 2, 34, 34, 0, 12, 16, 35, 35, 0, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 54, 0, 0, 12, 12, 16, 12, 55, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 21, 21, 0, 22, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 37, 0, 0, 2, 39, 0, 12, 12, 16, 41, 0, 0, 10, 0, 0, 0, 2, 50, 0, 12, 12, 16, 52, 12, 12, 53, 53, 16, 12, 53, 12, 53, 53, 53, 53, 53, 53, 53, 0, 2, 0, 12, 16, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 54, 0, 54, 0, 0, 12, 12, 16, 55, 12, 55, 0, 0, 2, 0, 0, 12, 12, 16, 12, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 47, 12, 47, 25, 4, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 4, 5, 0, 0, 0, 11, 11, 13, 12, 42, 42, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 45, 0, 45, 0, 0, 0, 11, 11, 13, 46, 12, 46, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 13, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 0, 0, 11, 11, 13, 30, 30, 31, 0, 0, 2, 24, 0, 12, 12, 16, 25, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 12, 12, 16, 12, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 30, 30, 0, 31, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 31, 36, 36, 37, 4, 4, 5, 38, 38, 39, 0, 0, 11, 11, 13, 40, 40, 41, 0, 0, 10, 0, 4, 4, 5, 49, 49, 50, 0, 0, 11, 11, 13, 51, 51, 52, 12, 12, 53, 53, 16, 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 23, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 23, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 54, 0, 0, 12, 12, 16, 12, 55, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 21, 21, 0, 22, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 37, 0, 0, 2, 39, 0, 12, 12, 16, 41, 0, 0, 10, 0, 0, 0, 2, 50, 0, 12, 12, 16, 52, 12, 12, 53, 53, 16, 12, 53, 12, 53, 53, 53, 53, 53, 53, 53, 0, 2, 0, 12, 16, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 54, 0, 54, 0, 0, 12, 12, 16, 55, 12, 55, 0, 0, 2, 0, 0, 12, 12, 16, 12, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 26, 26, 58, 0, 0, 2, 0, 12, 12, 16, 42, 42, 43, 43, 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 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, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 12, 53, 53, 16, 53, 53, 53, 53, 53, 53, 53, 53, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 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, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 54, 0, 0, 12, 12, 16, 12, 55, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 12, 12, 16, 0, 21, 21, 0, 22, 0, 0, 2, 0, 12, 12, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 22, 37, 0, 0, 2, 39, 0, 12, 12, 16, 41, 0, 0, 10, 0, 0, 0, 2, 50, 0, 12, 12, 16, 52, 12, 12, 53, 53, 16, 12, 53, 12, 53, 53, 53, 53, 53, 53, 53, 0, 2, 0, 12, 16, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 54, 0, 54, 0, 0, 12, 12, 16, 55, 12, 55, 0, 0, 2, 0, 0, 12, 12, 16, 12, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 2, 0, 12, 12, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 16, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 42, 42, 44, 0, 0, 2, 0, 0, 12, 12, 16, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 43, 48, 43, 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 16, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 12, 53, 53, 16, 53, 53, 53, 53, 53, 53, 53, 53, 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, 59, 59, 60, 61, 59, 59, 59, 59, 59, 59, 59, 59, 0, 0, 2, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63, 63, 64, 63, 28, 65, 63, 63, 63, 63, 63, 63, 63, 30, 30, 31, 32, 0, 23, 0, 0, 0, 0, 0, 4, 4, 5, 33, 0, 24, 34, 34, 2, 34, 35, 35, 16, 35, 63, 63, 63, 63, 64, 63, 63, 63, 63, 63, 63, 63, 63, 30, 30, 31, 0, 23, 0, 0, 0, 0, 0, 4, 4, 5, 0, 24, 11, 11, 13, 47, 12, 25, 4, 4, 5, 0, 11, 11, 13, 12, 26, 26, 27, 0, 2, 12, 12, 16, 12, 0, 2, 12, 16, 4, 4, 5, 45, 0, 0, 11, 11, 13, 46, 12, 4, 4, 5, 11, 11, 13, 45, 45, 2, 46, 46, 16, 30, 30, 31, 0, 4, 4, 5, 11, 11, 13, 30, 30, 31, 33, 33, 2, 24, 47, 47, 16, 25, 45, 45, 2, 0, 46, 46, 16, 30, 30, 0, 31, 33, 33, 2, 47, 47, 16, 30, 30, 31, 36, 37, 4, 4, 5, 38, 39, 11, 11, 13, 40, 41, 4, 4, 5, 49, 50, 11, 11, 13, 51, 52, 32, 32, 22, 23, 33, 33, 2, 47, 47, 16, 11, 11, 13, 12, 25, 4, 4, 5, 0, 11, 11, 13, 12, 0, 30, 30, 31, 0, 4, 4, 5, 11, 11, 13, 30, 30, 31, 33, 33, 2, 24, 47, 47, 16, 25, 0, 0, 30, 30, 0, 31, 33, 33, 2, 47, 47, 16, 30, 30, 31, 37, 4, 4, 5, 39, 11, 11, 13, 41, 4, 4, 5, 50, 11, 11, 13, 52, 32, 32, 22, 23, 33, 33, 2, 47, 47, 16, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 32, 33, 34, 35, 0, 32, 33, 47, 34, 34, 35, 0, 0, 12, 0, 12, 45, 45, 46, 45, 45, 45, 46, 45, 45, 46, 32, 33, 47, 32, 33, 47, 45, 45, 46, 45, 32, 33, 47, 32, 36, 38, 40, 49, 51, 32, 33, 47, 47, 34, 34, 35, 45, 32, 33, 47, 32, 33, 47, 45, 32, 33, 47, 32, 36, 38, 40, 49, 51, 32, 33, 47, 0, ] class << self attr_accessor :start end self.start = 2461 class << self attr_accessor :first_final end self.first_final = 2461 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 2449 class << self attr_accessor :en_main end self.en_main = 2461 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) address_list = AddressListStruct.new([], []) return address_list if Mail::Utilities.blank?(data) phrase_s = phrase_e = qstr_s = qstr = comment_s = nil group_name_s = domain_s = group_name = nil local_dot_atom_s = local_dot_atom_e = nil local_dot_atom_pre_comment_e = nil obs_domain_list_s = nil address_s = 0 address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 4 begin phrase_e = p - 1 end when 8 begin qstr_s = p end when 10 begin qstr = chars(data, qstr_s, p - 1) end when 59 begin comment_s = p unless comment_s end when 12 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end when 34 begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 3 begin if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end end when 43 begin domain_s = p end when 54 begin address.domain = chars(data, domain_s, p - 1).rstrip if address end when 1 begin local_dot_atom_s = p end when 24 begin local_dot_atom_e = p - 1 end when 21 begin local_dot_atom_pre_comment_e = p - 1 end when 50 begin address.local = '"' + qstr + '"' if address end when 20 begin obs_domain_list_s = p end when 2 begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 62 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 6 begin phrase_e = p - 1 end begin if qstr group = qstr qstr = nil else group = chars(data, group_name_s, p - 1) group_name_s = nil end address_list.group_names << group group_name = group # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address_s = p address.group = group_name end when 7 begin phrase_e = p - 1 end begin if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end end when 42 begin phrase_e = p - 1 end begin domain_s = p end when 30 begin phrase_e = p - 1 end begin local_dot_atom_pre_comment_e = p - 1 end when 9 begin qstr_s = p end begin qstr = chars(data, qstr_s, p - 1) end when 60 begin comment_s = p unless comment_s end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 61 begin comment_s = p unless comment_s end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 11 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin phrase_e = p - 1 end when 35 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 17 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end end when 55 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.domain = chars(data, domain_s, p - 1).rstrip if address end when 53 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_s = p end when 25 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end when 52 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.local = '"' + qstr + '"' if address end when 16 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 29 begin address_s = p end begin phrase_s = p end when 28 begin address_s = p end begin if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end end when 48 begin domain_s = p end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 45 begin address.domain = chars(data, domain_s, p - 1).rstrip if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 18 begin local_dot_atom_s = p end begin obs_domain_list_s = p end when 33 begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 39 begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end when 23 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end when 22 begin local_dot_atom_pre_comment_e = p - 1 end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 49 begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 56 begin address.obs_domain_list = chars(data, obs_domain_list_s, p - 1) end begin local_dot_atom_s = p end when 5 begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin phrase_e = p - 1 end when 14 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin phrase_e = p - 1 end begin if qstr group = qstr qstr = nil else group = chars(data, group_name_s, p - 1) group_name_s = nil end address_list.group_names << group group_name = group # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address_s = p address.group = group_name end when 15 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin phrase_e = p - 1 end begin if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end end when 46 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.domain = chars(data, domain_s, p - 1).rstrip if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 47 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 41 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end when 51 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 13 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin phrase_e = p - 1 end when 65 begin group_name_s = p end begin phrase_s = p end begin address_s = p end when 26 begin address_s = p end begin phrase_s = p end begin local_dot_atom_s = p end when 19 begin local_dot_atom_s = p end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin obs_domain_list_s = p end when 38 begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 32 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 37 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end when 57 begin address.obs_domain_list = chars(data, obs_domain_list_s, p - 1) end begin local_dot_atom_s = p end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end when 44 begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin phrase_e = p - 1 end begin domain_s = p end when 31 begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin phrase_e = p - 1 end begin local_dot_atom_pre_comment_e = p - 1 end when 40 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 63 begin group_name_s = p end begin phrase_s = p end begin address_s = p end begin local_dot_atom_s = p end when 27 begin address_s = p end begin phrase_s = p end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin local_dot_atom_s = p end when 36 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 58 begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin address_s = p end begin phrase_s = p end begin local_dot_atom_s = p end when 64 begin group_name_s = p end begin phrase_s = p end begin begin stack[top] = cs top += 1 cs = 2449 _goto_level = _again next end end begin address_s = p end begin local_dot_atom_s = p end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 12 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end when 34 begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 35 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 45 begin address.domain = chars(data, domain_s, p - 1).rstrip if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 33 begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 49 begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 46 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.domain = chars(data, domain_s, p - 1).rstrip if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 47 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 51 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 38 begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 32 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 40 begin if address address.comments << chars(data, comment_s, p - 2) end comment_s = nil end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end when 36 begin local_dot_atom_pre_comment_e = p - 1 end begin local_dot_atom_e = p - 1 end begin address.local = '"' + qstr + '"' if address end begin if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p - 1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end end end end end if _goto_level <= _out break end end end if p != eof || cs < 2461 raise Mail::Field::IncompleteParseError.new(Mail::AddressList, data, p) end address_list end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/address_lists_parser.rl000066400000000000000000000112021436372131700223740ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine address_lists; alphtype int; # Phrase action phrase_s { phrase_s = p } action phrase_e { phrase_e = p-1 } # Quoted String. action qstr_s { qstr_s = p } action qstr_e { qstr = chars(data, qstr_s, p-1) } # Comment action comment_s { comment_s = p unless comment_s } action comment_e { if address address.comments << chars(data, comment_s, p-2) end comment_s = nil } # Group Name action group_name_s { group_name_s = p } action group_name_e { if qstr group = qstr qstr = nil else group = chars(data, group_name_s, p-1) group_name_s = nil end address_list.group_names << group group_name = group # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address_s = p address.group = group_name } # Address action address_s { address_s = p } # Ignore address end events without a start event. action address_e { if address_s if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e if address.domain address.local = chars(data, local_dot_atom_s, local_dot_atom_e) else address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e) end end address.raw = chars(data, address_s, p-1) address_list.addresses << address if address # Start next address address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) address.group = group_name address_s = nil end } # Don't set the display name until the address has actually started. This # allows us to choose quoted_s version if it exists and always use the # 'full' phrase version. action angle_addr_s { if qstr address.display_name = Mail::Utilities.unescape(qstr) qstr = nil elsif phrase_e address.display_name = chars(data, phrase_s, phrase_e).strip phrase_e = phrase_s = nil end } # Domain action domain_s { domain_s = p } action domain_e { address.domain = chars(data, domain_s, p-1).rstrip if address } # Local action local_dot_atom_s { local_dot_atom_s = p } action local_dot_atom_e { local_dot_atom_e = p-1 } action local_dot_atom_pre_comment_e { local_dot_atom_pre_comment_e = p-1 } action local_quoted_string_e { address.local = '"' + qstr + '"' if address } # obs_domain_list action obs_domain_list_s { obs_domain_list_s = p } action obs_domain_list_e { address.obs_domain_list = chars(data, obs_domain_list_s, p-1) } # Junk actions action addr_spec { } action ctime_date_e { } action ctime_date_s { } action date_e { } action date_s { } action disp_type_e { } action disp_type_s { } action encoding_e { } action encoding_s { } action main_type_e { } action main_type_s { } action major_digits_e { } action major_digits_s { } action minor_digits_e { } action minor_digits_s { } action msg_id_e { } action msg_id_s { } action param_attr_e { } action param_attr_s { } action param_val_e { } action param_val_s { } action received_tokens_e { } action received_tokens_s { } action sub_type_e { } action sub_type_s { } action time_e { } action time_s { } action token_string_e { } action token_string_s { } include rfc5322 "rfc5322.rl"; main := address_lists; }%% module Mail::Parsers module AddressListsParser extend Mail::ParserTools AddressListStruct = Struct.new(:addresses, :group_names, :error) AddressStruct = Struct.new(:raw, :domain, :comments, :local, :obs_domain_list, :display_name, :group, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) address_list = AddressListStruct.new([], []) return address_list if Mail::Utilities.blank?(data) phrase_s = phrase_e = qstr_s = qstr = comment_s = nil group_name_s = domain_s = group_name = nil local_dot_atom_s = local_dot_atom_e = nil local_dot_atom_pre_comment_e = nil obs_domain_list_s = nil address_s = 0 address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil) # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::AddressList, data, p) end address_list end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_disposition_parser.rb000066400000000000000000000730451436372131700236320ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module ContentDispositionParser extend Mail::ParserTools ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 33, 126, 9, 126, 10, 10, 9, 32, 33, 126, 9, 126, 9, 40, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 40, 10, 10, 9, 32, 9, 126, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 33, 126, 9, 59, 9, 59, 9, 126, 9, 59, 9, 59, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 94, 118, 1, 24, 94, 118, 32, 1, 24, 244, 244, 1, 24, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 32, 1, 24, 118, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 94, 51, 51, 118, 51, 51, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 95, 214, 216, 241, 336, 455, 488, 490, 515, 760, 1005, 1007, 1032, 1034, 1059, 1305, 1370, 1403, 1468, 1501, 1550, 1615, 1632, 1665, 1667, 1692, 1811, 2056, 2301, 2303, 2328, 2574, 2639, 2672, 2737, 2770, 2819, 2884, 2901, 2996, 3048, 3100, 3219, 3271, 3323, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 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, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 4, 4, 4, 4, 4, 4, 5, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 6, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 7, 7, 7, 7, 7, 7, 7, 1, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 8, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 9, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 11, 12, 11, 11, 11, 11, 11, 13, 1, 11, 11, 11, 11, 11, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 1, 1, 11, 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 14, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 1, 16, 1, 1, 1, 1, 1, 17, 1, 18, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 27, 28, 28, 28, 29, 1, 30, 30, 30, 30, 30, 30, 30, 30, 30, 1, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 32, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 38, 39, 39, 39, 40, 1, 41, 1, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 1, 42, 1, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 36, 36, 38, 39, 39, 39, 40, 1, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 44, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 1, 46, 1, 1, 1, 1, 1, 47, 1, 48, 1, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 1, 1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 52, 52, 52, 52, 52, 52, 52, 53, 1, 52, 52, 52, 52, 52, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 1, 1, 1, 1, 1, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 1, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 56, 57, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 58, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 61, 61, 63, 64, 64, 64, 65, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 66, 66, 67, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 68, 69, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 70, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 73, 73, 75, 76, 76, 76, 77, 1, 78, 1, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 73, 73, 75, 76, 76, 76, 77, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 1, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 1, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 1, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 1, 79, 79, 79, 79, 79, 79, 79, 1, 1, 79, 79, 79, 79, 79, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 80, 1, 1, 1, 1, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 81, 1, 1, 1, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 1, 1, 1, 1, 1, 1, 1, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 1, 85, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 89, 1, 1, 1, 90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 89, 91, 1, 91, 91, 91, 91, 91, 92, 1, 91, 91, 91, 91, 91, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 84, 1, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 49, 1, 1, 1, 93, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 94, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 95, 1, 1, 1, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 95, 1, 1, 1, 1, 1, 1, 1, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 40, 0, 2, 3, 5, 27, 4, 5, 6, 7, 8, 43, 10, 24, 7, 8, 10, 24, 9, 11, 12, 41, 16, 17, 18, 19, 20, 21, 22, 23, 11, 12, 41, 16, 17, 18, 19, 20, 21, 22, 23, 13, 15, 41, 7, 8, 10, 24, 26, 44, 2, 3, 5, 27, 29, 30, 29, 46, 32, 33, 34, 35, 36, 37, 38, 39, 29, 30, 29, 46, 32, 33, 34, 35, 36, 37, 38, 39, 31, 40, 2, 41, 14, 42, 2, 41, 14, 42, 2, 44, 25, 43, 45, 25, 45, 44, 25, 45, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 0, 0, 2, 3, 0, 0, 4, 5, 5, 5, 5, 6, 0, 0, 0, 3, 0, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 11, 0, 0, 10, 10, 12, 11, 13, 13, 14, 15, 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, 3, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 18, 19, 18, 20, 20, 21, 20, 18, 18, 0, 22, 0, 3, 10, 10, 11, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 17, 18, 20, 18, 0, 10, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 40 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 28 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_disposition = ContentDispositionStruct.new("", []) return content_disposition if Mail::Utilities.blank?(data) # Parser state disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin disp_type_s = p end when 17 begin content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase end when 2 begin param_attr_s = p end when 4 begin param_attr = chars(data, param_attr_s, p - 1) end when 7 begin qstr_s = p end when 9 begin qstr = chars(data, qstr_s, p - 1) end when 5 begin param_val_s = p end when 18 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end when 10 begin end when 13 begin end when 3 begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end when 16 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 8 begin qstr_s = p end begin qstr = chars(data, qstr_s, p - 1) end when 6 begin param_val_s = p end begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end when 22 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end when 12 begin end begin param_attr_s = p end when 20 begin end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end when 11 begin end begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end when 14 begin end begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end when 15 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 19 begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end when 21 begin end begin begin stack[top] = cs top += 1 cs = 28 _goto_level = _again next end end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 17 begin content_disposition.disposition_type = chars(data, disp_type_s, p - 1).downcase end when 18 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end when 10 begin end when 20 begin end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_disposition.parameters << {param_attr => value} param_attr = nil qstr = nil end end end end if _goto_level <= _out break end end end if p != eof || cs < 40 raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p) end content_disposition end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_disposition_parser.rl000066400000000000000000000043541436372131700236410ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine content_disposition; alphtype int; # Disposition Type action disp_type_s { disp_type_s = p } action disp_type_e { content_disposition.disposition_type = chars(data, disp_type_s, p-1).downcase } # Parameter Attribute action param_attr_s { param_attr_s = p } action param_attr_e { param_attr = chars(data, param_attr_s, p-1) } # Quoted String action qstr_s { qstr_s = p } action qstr_e { qstr = chars(data, qstr_s, p-1) } # Parameter Value action param_val_s { param_val_s = p } action param_val_e { if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentDispositionElement, data, "no attribute for value") end # Use quoted string value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p-1) content_disposition.parameters << { param_attr => value } param_attr = nil qstr = nil } # No-op actions action comment_e { } action comment_s { } action phrase_e { } action phrase_s { } action main_type_e { } action main_type_s { } action sub_type_e { } action sub_type_s { } include rfc2183_content_disposition "rfc2183_content_disposition.rl"; main := disposition; }%% module Mail::Parsers module ContentDispositionParser extend Mail::ParserTools ContentDispositionStruct = Struct.new(:disposition_type, :parameters, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_disposition = ContentDispositionStruct.new('', []) return content_disposition if Mail::Utilities.blank?(data) # Parser state disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::ContentDispositionElement, data, p) end content_disposition end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_location_parser.rb000066400000000000000000000640141436372131700230720ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module ContentLocationParser extend Mail::ParserTools ContentLocationStruct = Struct.new(:location, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 126, 10, 10, 9, 32, 10, 10, 9, 32, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 126, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 126, 9, 40, 9, 40, 1, 244, 1, 244, 1, 244, 1, 244, 9, 126, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 118, 1, 24, 1, 24, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 118, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 118, 32, 32, 244, 244, 244, 244, 118, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 119, 121, 146, 148, 173, 418, 420, 445, 691, 756, 789, 854, 887, 936, 1001, 1018, 1020, 1045, 1164, 1409, 1654, 1656, 1681, 1927, 1992, 2025, 2090, 2123, 2172, 2237, 2254, 2373, 2406, 2439, 2684, 2929, 3174, 3419, 3538, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 6, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 7, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 17, 18, 18, 18, 19, 1, 20, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 17, 18, 18, 18, 19, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 21, 1, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 1, 23, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 25, 26, 25, 25, 25, 25, 25, 27, 1, 25, 25, 25, 25, 25, 1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 1, 1, 1, 25, 1, 1, 1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 1, 1, 1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 31, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 32, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 35, 35, 37, 38, 38, 38, 39, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 40, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 42, 43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 44, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 52, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 40, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 53, 1, 1, 1, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 55, 55, 55, 55, 55, 55, 55, 56, 1, 55, 55, 55, 55, 55, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 1, 1, 55, 1, 1, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 1, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 8, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 58, 1, 59, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 61, 1, 62, 62, 62, 62, 62, 62, 62, 62, 63, 1, 62, 62, 64, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 65, 66, 65, 65, 65, 65, 65, 67, 62, 65, 65, 65, 65, 65, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 62, 62, 65, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 68, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 71, 71, 73, 74, 74, 74, 75, 1, 9, 9, 9, 9, 9, 9, 9, 9, 22, 1, 9, 9, 76, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 22, 9, 11, 9, 9, 9, 9, 9, 77, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 17, 18, 18, 18, 19, 1, 9, 9, 9, 9, 9, 9, 9, 9, 78, 1, 9, 9, 79, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 78, 9, 11, 9, 9, 9, 9, 9, 80, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 17, 18, 18, 18, 19, 1, 9, 9, 9, 9, 9, 9, 9, 9, 81, 1, 9, 9, 82, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 81, 83, 84, 83, 83, 83, 83, 83, 85, 9, 83, 83, 83, 83, 83, 9, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 9, 9, 9, 83, 9, 9, 9, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 9, 12, 9, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 17, 18, 18, 18, 19, 1, 53, 1, 1, 1, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 55, 55, 55, 55, 55, 55, 55, 86, 1, 55, 55, 55, 55, 55, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 1, 1, 55, 1, 1, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 1, 1, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 1, 0, 2, 32, 35, 19, 3, 5, 33, 6, 7, 33, 9, 10, 11, 12, 13, 14, 15, 16, 8, 18, 36, 1, 2, 32, 35, 19, 21, 22, 21, 40, 24, 25, 26, 27, 28, 29, 30, 31, 21, 22, 21, 40, 24, 25, 26, 27, 28, 29, 30, 31, 23, 33, 4, 32, 34, 4, 34, 33, 4, 34, 6, 36, 17, 38, 39, 37, 9, 10, 11, 12, 13, 14, 15, 16, 17, 37, 36, 17, 37, 36, 17, 38, 39, 37, 34, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 5, 6, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 12, 0, 2, 4, 4, 6, 13, 14, 14, 13, 15, 16, 13, 13, 13, 13, 13, 13, 13, 13, 0, 2, 4, 4, 6, 11, 11, 0, 3, 12, 17, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 11, 0, 4, 11, 0, 4, 11, 11, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 32 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 20 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_location = ContentLocationStruct.new(nil) return content_location if Mail::Utilities.blank?(data) # Parser state disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 13 begin qstr_s = p end when 3 begin content_location.location = chars(data, qstr_s, p - 1) end when 1 begin token_string_s = p end when 11 begin content_location.location = chars(data, token_string_s, p - 1) end when 4 begin end when 7 begin end when 2 begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end when 10 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 15 begin qstr_s = p end begin content_location.location = chars(data, qstr_s, p - 1) end when 14 begin qstr_s = p end begin content_location.location = chars(data, token_string_s, p - 1) end when 12 begin content_location.location = chars(data, token_string_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end when 5 begin end begin token_string_s = p end when 6 begin end begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end when 8 begin end begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end when 9 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 17 begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end begin content_location.location = chars(data, token_string_s, p - 1) end when 16 begin qstr_s = p end begin content_location.location = chars(data, token_string_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 20 _goto_level = _again next end end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 11 begin content_location.location = chars(data, token_string_s, p - 1) end when 4 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 32 raise Mail::Field::IncompleteParseError.new(Mail::ContentLocationElement, data, p) end content_location end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_location_parser.rl000066400000000000000000000035751436372131700231110ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ # RFC 2557 Content-Location # https://tools.ietf.org/html/rfc2557#section-4.1 machine content_location; alphtype int; # Quoted String action qstr_s { qstr_s = p } action qstr_e { content_location.location = chars(data, qstr_s, p-1) } # Token String action token_string_s { token_string_s = p } action token_string_e { content_location.location = chars(data, token_string_s, p-1) } # No-op actions action comment_e { } action comment_s { } action phrase_e { } action phrase_s { } action main_type_e { } action main_type_s { } action sub_type_e { } action sub_type_s { } action param_attr_e { } action param_attr_s { } action param_val_e { } action param_val_s { } include rfc2045_content_type "rfc2045_content_type.rl"; location = quoted_string | ((token | 0x3d)+ >token_string_s %token_string_e); main := CFWS? location CFWS?; }%% module Mail::Parsers module ContentLocationParser extend Mail::ParserTools ContentLocationStruct = Struct.new(:location, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_location = ContentLocationStruct.new(nil) return content_location if Mail::Utilities.blank?(data) # Parser state disp_type_s = param_attr_s = param_attr = qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::ContentLocationElement, data, p) end content_location end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_transfer_encoding_parser.rb000066400000000000000000000373471436372131700247650ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module ContentTransferEncodingParser extend Mail::ParserTools ContentTransferEncodingStruct = Struct.new(:encoding, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 126, 10, 10, 9, 32, 10, 10, 9, 32, 10, 10, 9, 32, 9, 126, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 126, 9, 59, 9, 59, 9, 40, 9, 40, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 118, 1, 24, 1, 24, 1, 24, 118, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 118, 51, 51, 32, 32, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 119, 121, 146, 148, 173, 175, 200, 319, 564, 809, 811, 836, 1082, 1147, 1180, 1245, 1278, 1327, 1392, 1409, 1528, 1580, 1632, 1665, 1698, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3, 4, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 6, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 8, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 10, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 12, 12, 12, 12, 12, 12, 12, 13, 1, 12, 12, 12, 12, 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 1, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 21, 21, 23, 24, 24, 24, 25, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 28, 29, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 33, 33, 35, 36, 36, 36, 37, 1, 38, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 33, 33, 35, 36, 36, 36, 37, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 39, 1, 1, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 41, 41, 41, 41, 41, 41, 41, 42, 1, 41, 41, 41, 41, 41, 1, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 43, 1, 1, 1, 1, 1, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 1, 1, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 1, 7, 1, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 46, 1, 1, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 9, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 1, 1, 1, 51, 1, 49, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 53, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 1, 0, 2, 21, 8, 3, 5, 22, 7, 24, 1, 2, 21, 8, 10, 11, 10, 26, 13, 14, 15, 16, 17, 18, 19, 20, 10, 11, 10, 26, 13, 14, 15, 16, 17, 18, 19, 20, 12, 22, 4, 21, 23, 24, 4, 23, 22, 4, 23, 24, 6, 25, 6, 25, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 3, 3, 4, 5, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 11, 10, 0, 2, 3, 3, 5, 3, 0, 2, 3, 5, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 3, 0, 3, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 21 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 9 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_transfer_encoding = ContentTransferEncodingStruct.new("") return content_transfer_encoding if Mail::Utilities.blank?(data) # Parser state encoding_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin encoding_s = p end when 10 begin content_transfer_encoding.encoding = chars(data, encoding_s, p - 1).downcase end when 3 begin end when 6 begin end when 2 begin begin stack[top] = cs top += 1 cs = 9 _goto_level = _again next end end when 9 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 11 begin content_transfer_encoding.encoding = chars(data, encoding_s, p - 1).downcase end begin begin stack[top] = cs top += 1 cs = 9 _goto_level = _again next end end when 4 begin end begin encoding_s = p end when 5 begin end begin begin stack[top] = cs top += 1 cs = 9 _goto_level = _again next end end when 7 begin end begin begin stack[top] = cs top += 1 cs = 9 _goto_level = _again next end end when 8 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 10 begin content_transfer_encoding.encoding = chars(data, encoding_s, p - 1).downcase end when 3 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 21 raise Mail::Field::IncompleteParseError.new(Mail::ContentTransferEncodingElement, data, p) end content_transfer_encoding end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_transfer_encoding_parser.rl000066400000000000000000000032371436372131700247660ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine content_transfer_encoding; alphtype int; action encoding_s { encoding_s = p } action encoding_e { content_transfer_encoding.encoding = chars(data, encoding_s, p-1).downcase } # No-op actions action comment_e { } action comment_s { } action phrase_e { } action phrase_s { } action qstr_e { } action qstr_s { } action param_attr_e { } action param_attr_s { } action param_val_e { } action param_val_s { } action main_type_e { } action main_type_s { } action sub_type_e { } action sub_type_s { } include rfc2045_content_transfer_encoding "rfc2045_content_transfer_encoding.rl"; main := content_transfer_encoding; }%% module Mail::Parsers module ContentTransferEncodingParser extend Mail::ParserTools ContentTransferEncodingStruct = Struct.new(:encoding, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) content_transfer_encoding = ContentTransferEncodingStruct.new('') return content_transfer_encoding if Mail::Utilities.blank?(data) # Parser state encoding_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::ContentTransferEncodingElement, data, p) end content_transfer_encoding end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_type_parser.rb000066400000000000000000001047101436372131700222410ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module ContentTypeParser extend Mail::ParserTools ContentTypeStruct = Struct.new(:main_type, :sub_type, :parameters, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 33, 126, 33, 126, 33, 126, 9, 126, 10, 10, 9, 32, 33, 126, 9, 126, 9, 40, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 126, 9, 126, 10, 10, 9, 32, 9, 126, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 40, 10, 10, 9, 32, 9, 126, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 126, 9, 59, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 94, 94, 94, 118, 1, 24, 94, 118, 32, 1, 24, 244, 244, 1, 24, 1, 24, 118, 118, 1, 24, 118, 245, 64, 32, 64, 32, 48, 64, 16, 32, 1, 24, 118, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 118, 51, 118, 118, 118, 118, 118, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 95, 190, 285, 404, 406, 431, 526, 645, 678, 680, 705, 950, 1195, 1197, 1222, 1224, 1249, 1368, 1487, 1489, 1514, 1633, 1879, 1944, 1977, 2042, 2075, 2124, 2189, 2206, 2239, 2241, 2266, 2385, 2630, 2875, 2877, 2902, 3148, 3213, 3246, 3311, 3344, 3393, 3458, 3475, 3594, 3646, 3765, 3884, 4003, 4122, 4241, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 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, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 5, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 7, 7, 7, 7, 7, 7, 7, 8, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 9, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 10, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 11, 11, 11, 11, 11, 11, 11, 1, 1, 11, 11, 11, 11, 11, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 1, 1, 12, 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 1, 1, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 13, 1, 1, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 15, 16, 15, 15, 15, 15, 15, 17, 1, 15, 15, 15, 15, 15, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 18, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 20, 1, 1, 1, 1, 1, 21, 1, 22, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 26, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 31, 32, 32, 32, 33, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 45, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 46, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, 48, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 7, 7, 7, 7, 7, 7, 7, 50, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 9, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 48, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 7, 7, 7, 7, 7, 7, 7, 50, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 51, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 1, 52, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 54, 54, 54, 54, 54, 54, 54, 55, 1, 54, 54, 54, 54, 54, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 1, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 56, 1, 1, 1, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 58, 1, 1, 1, 1, 1, 59, 1, 60, 1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 1, 62, 1, 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 54, 54, 54, 54, 54, 54, 54, 64, 1, 54, 54, 54, 54, 54, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 65, 1, 1, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 66, 66, 67, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 68, 69, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 70, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 73, 73, 75, 76, 76, 76, 77, 1, 78, 78, 78, 78, 78, 78, 78, 78, 78, 1, 78, 78, 79, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 80, 81, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 82, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, 85, 85, 87, 88, 88, 88, 89, 1, 90, 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 78, 1, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, 85, 85, 87, 88, 88, 88, 89, 1, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 1, 91, 1, 1, 1, 92, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 91, 93, 93, 93, 93, 93, 93, 93, 94, 1, 93, 93, 93, 93, 93, 1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 95, 1, 1, 1, 1, 1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 1, 1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 1, 96, 1, 1, 1, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 96, 1, 1, 1, 1, 1, 1, 1, 98, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 99, 1, 96, 1, 1, 1, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 96, 7, 7, 7, 7, 7, 7, 7, 98, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 99, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 100, 1, 1, 1, 101, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 100, 54, 54, 54, 54, 54, 54, 54, 102, 1, 54, 54, 54, 54, 54, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 103, 1, 1, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 104, 1, 1, 1, 105, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 104, 106, 1, 106, 106, 106, 106, 106, 107, 1, 106, 106, 106, 106, 106, 1, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1, 99, 1, 106, 1, 1, 1, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1, 1, 1, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1, 61, 1, 1, 1, 108, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 7, 7, 7, 7, 7, 7, 7, 109, 1, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 9, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 110, 1, 1, 1, 111, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 110, 54, 54, 54, 54, 54, 54, 54, 112, 1, 54, 54, 54, 54, 54, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 65, 1, 1, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 2, 0, 2, 3, 47, 4, 5, 7, 34, 18, 6, 7, 8, 9, 10, 51, 12, 31, 9, 10, 12, 31, 11, 13, 14, 48, 23, 24, 25, 26, 27, 28, 29, 30, 13, 14, 48, 23, 24, 25, 26, 27, 28, 29, 30, 15, 17, 49, 19, 20, 22, 21, 19, 20, 7, 22, 9, 10, 12, 31, 33, 52, 4, 5, 34, 18, 36, 37, 36, 54, 39, 40, 41, 42, 43, 44, 45, 46, 36, 37, 36, 54, 39, 40, 41, 42, 43, 44, 45, 46, 38, 4, 5, 47, 34, 18, 49, 16, 50, 18, 49, 16, 50, 18, 52, 32, 51, 53, 32, 53, 52, 32, 53, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 0, 2, 3, 0, 0, 4, 5, 0, 0, 0, 6, 7, 7, 7, 7, 8, 0, 0, 0, 5, 0, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 12, 12, 13, 14, 12, 12, 12, 14, 0, 0, 12, 12, 14, 12, 15, 15, 16, 17, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 5, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 0, 20, 19, 21, 21, 22, 21, 23, 23, 24, 23, 21, 21, 0, 25, 0, 5, 12, 12, 14, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 19, 21, 21, 23, 21, 0, 12, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 47 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 35 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) return ContentTypeStruct.new("text", "plain", []) if Mail::Utilities.blank?(data) content_type = ContentTypeStruct.new(nil, nil, []) # Parser state main_type_s = sub_type_s = param_attr_s = param_attr = nil qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin main_type_s = p end when 2 begin content_type.main_type = chars(data, main_type_s, p - 1).downcase end when 3 begin sub_type_s = p end when 19 begin content_type.sub_type = chars(data, sub_type_s, p - 1).downcase end when 4 begin param_attr_s = p end when 6 begin param_attr = chars(data, param_attr_s, p - 1) end when 9 begin qstr_s = p end when 11 begin qstr = chars(data, qstr_s, p - 1) end when 7 begin param_val_s = p end when 21 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end when 12 begin end when 15 begin end when 5 begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 18 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 20 begin content_type.sub_type = chars(data, sub_type_s, p - 1).downcase end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 10 begin qstr_s = p end begin qstr = chars(data, qstr_s, p - 1) end when 8 begin param_val_s = p end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 25 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 13 begin end begin param_attr_s = p end when 23 begin end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end when 14 begin end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 16 begin end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end when 17 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 22 begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end when 24 begin end begin begin stack[top] = cs top += 1 cs = 35 _goto_level = _again next end end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 19 begin content_type.sub_type = chars(data, sub_type_s, p - 1).downcase end when 21 begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end when 12 begin end when 23 begin end begin if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p - 1) content_type.parameters << {param_attr => value} param_attr = nil qstr = nil end end end end if _goto_level <= _out break end end end if p != eof || cs < 47 raise Mail::Field::IncompleteParseError.new(Mail::ContentTypeElement, data, p) end content_type end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/content_type_parser.rl000066400000000000000000000043471436372131700222600ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine content_type; alphtype int; # Main Type action main_type_s { main_type_s = p } action main_type_e { content_type.main_type = chars(data, main_type_s, p-1).downcase } # Sub Type action sub_type_s { sub_type_s = p } action sub_type_e { content_type.sub_type = chars(data, sub_type_s, p-1).downcase } # Parameter Attribute action param_attr_s { param_attr_s = p } action param_attr_e { param_attr = chars(data, param_attr_s, p-1) } # Quoted String action qstr_s { qstr_s = p } action qstr_e { qstr = chars(data, qstr_s, p-1) } # Parameter Value action param_val_s { param_val_s = p } action param_val_e { if param_attr.nil? raise Mail::Field::ParseError.new(Mail::ContentTypeElement, data, "no attribute for value") end # Use quoted s value if one exists, otherwise use parameter value value = qstr || chars(data, param_val_s, p-1) content_type.parameters << { param_attr => value } param_attr = nil qstr = nil } # No-op actions action comment_e { } action comment_s { } action phrase_e { } action phrase_s { } include rfc2045_content_type "rfc2045_content_type.rl"; main := content_type; }%% module Mail::Parsers module ContentTypeParser extend Mail::ParserTools ContentTypeStruct = Struct.new(:main_type, :sub_type, :parameters, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) return ContentTypeStruct.new('text', 'plain', []) if Mail::Utilities.blank?(data) content_type = ContentTypeStruct.new(nil, nil, []) # Parser state main_type_s = sub_type_s = param_attr_s = param_attr = nil qstr_s = qstr = param_val_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::ContentTypeElement, data, p) end content_type end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/date_time_parser.rb000066400000000000000000000713451436372131700214700ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module DateTimeParser extend Mail::ParserTools DateTimeStruct = Struct.new(:date_string, :time_string, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 87, 9, 87, 10, 10, 9, 32, 9, 87, 9, 83, 9, 83, 10, 10, 9, 32, 9, 83, 112, 117, 114, 114, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 57, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 10, 10, 9, 32, 9, 58, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 9, 122, 10, 10, 9, 32, 9, 58, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 40, 9, 122, 10, 10, 9, 32, 9, 40, 48, 57, 48, 57, 48, 57, 48, 57, 10, 10, 9, 32, 84, 84, 103, 103, 101, 101, 99, 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, 114, 121, 111, 111, 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 114, 114, 105, 105, 9, 44, 10, 10, 9, 32, 9, 44, 9, 57, 9, 57, 10, 10, 9, 32, 9, 57, 111, 111, 110, 110, 97, 117, 116, 116, 104, 117, 117, 117, 101, 101, 101, 101, 100, 100, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 40, 9, 40, 9, 40, 9, 83, 9, 77, 9, 84, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 79, 79, 1, 24, 79, 75, 75, 1, 24, 75, 6, 1, 49, 1, 24, 49, 10, 49, 49, 1, 24, 49, 10, 50, 1, 24, 50, 49, 1, 24, 49, 10, 50, 114, 1, 24, 50, 49, 1, 24, 49, 10, 32, 114, 1, 24, 32, 10, 10, 10, 10, 1, 24, 1, 1, 1, 1, 1, 1, 21, 1, 3, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 36, 1, 24, 36, 49, 49, 1, 24, 49, 1, 1, 21, 1, 14, 1, 1, 1, 1, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 32, 32, 32, 75, 69, 76, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 80, 160, 162, 187, 267, 343, 419, 421, 446, 522, 529, 531, 581, 583, 608, 658, 669, 719, 769, 771, 796, 846, 857, 908, 910, 935, 986, 1036, 1038, 1063, 1113, 1124, 1175, 1290, 1292, 1317, 1368, 1418, 1420, 1445, 1495, 1506, 1539, 1654, 1656, 1681, 1714, 1725, 1736, 1747, 1758, 1760, 1785, 1787, 1789, 1791, 1793, 1795, 1797, 1819, 1821, 1825, 1827, 1836, 1838, 1840, 1842, 1844, 1846, 1848, 1850, 1852, 1889, 1891, 1916, 1953, 2003, 2053, 2055, 2080, 2130, 2132, 2134, 2156, 2158, 2173, 2175, 2177, 2179, 2181, 2426, 2671, 2673, 2698, 2944, 3009, 3042, 3107, 3140, 3189, 3254, 3271, 3304, 3337, 3370, 3446, 3516, 3593, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 7, 8, 1, 1, 9, 1, 10, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 7, 8, 1, 1, 9, 1, 14, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1, 15, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 21, 22, 1, 1, 23, 1, 24, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 1, 29, 1, 1, 1, 30, 1, 1, 31, 32, 33, 1, 1, 1, 34, 1, 24, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 1, 1, 1, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 1, 29, 1, 1, 1, 30, 1, 1, 31, 32, 33, 1, 1, 1, 34, 1, 35, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 36, 1, 1, 1, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 1, 1, 40, 1, 41, 1, 1, 1, 42, 1, 1, 43, 44, 45, 1, 1, 1, 46, 1, 47, 1, 1, 1, 1, 48, 1, 49, 1, 49, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 1, 53, 1, 49, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 54, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 1, 1, 1, 1, 1, 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1, 59, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 61, 1, 1, 1, 1, 1, 1, 1, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 1, 59, 1, 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 61, 1, 1, 1, 1, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 63, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 64, 1, 1, 1, 65, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 1, 66, 1, 1, 1, 1, 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1, 68, 1, 1, 1, 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 68, 1, 1, 1, 1, 1, 1, 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 72, 1, 68, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 68, 1, 73, 1, 1, 1, 74, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1, 75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 71, 1, 1, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 1, 1, 1, 1, 1, 1, 78, 1, 1, 1, 1, 1, 1, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 80, 1, 71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 71, 1, 76, 1, 1, 1, 81, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 1, 1, 1, 1, 1, 1, 82, 1, 1, 1, 1, 1, 1, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 85, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 87, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 85, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 1, 1, 1, 1, 1, 1, 1, 87, 1, 1, 89, 1, 89, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 1, 1, 1, 1, 1, 90, 90, 91, 90, 91, 90, 92, 90, 90, 1, 90, 90, 91, 90, 90, 91, 90, 90, 90, 90, 93, 90, 90, 90, 90, 90, 1, 1, 1, 1, 1, 1, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 94, 1, 85, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 85, 1, 95, 1, 1, 1, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 95, 1, 1, 1, 1, 1, 1, 1, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 98, 1, 88, 1, 1, 1, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 1, 1, 1, 1, 1, 1, 100, 1, 1, 1, 1, 1, 1, 1, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 1, 102, 1, 88, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 1, 98, 1, 1, 1, 103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 98, 1, 1, 1, 1, 1, 1, 1, 104, 1, 1, 1, 1, 1, 1, 1, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 1, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1, 107, 1, 1, 1, 108, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 107, 1, 1, 1, 1, 1, 1, 1, 109, 1, 107, 1, 1, 1, 108, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 107, 1, 1, 1, 1, 1, 1, 1, 109, 1, 1, 89, 1, 89, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 90, 90, 91, 90, 91, 90, 92, 90, 90, 1, 90, 90, 91, 90, 90, 91, 90, 90, 90, 90, 93, 90, 90, 90, 90, 90, 1, 1, 1, 1, 1, 1, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 110, 1, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 107, 1, 111, 1, 1, 1, 112, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 111, 1, 1, 1, 1, 1, 1, 1, 113, 1, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 1, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 1, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 1, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1, 117, 1, 118, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 118, 1, 90, 1, 49, 1, 119, 1, 49, 1, 120, 1, 49, 1, 121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 122, 1, 49, 1, 49, 1, 49, 1, 123, 1, 49, 1, 1, 1, 1, 1, 1, 49, 1, 124, 1, 49, 1, 125, 1, 49, 1, 126, 1, 49, 1, 127, 1, 128, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 1, 1, 1, 1, 1, 1, 130, 1, 1, 1, 131, 1, 132, 1, 128, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 133, 1, 1, 1, 134, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 133, 1, 1, 1, 1, 1, 1, 1, 135, 1, 1, 1, 136, 1, 137, 1, 1, 1, 138, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 137, 1, 1, 1, 1, 1, 1, 1, 139, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 140, 1, 1, 1, 141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140, 1, 1, 1, 1, 1, 1, 1, 142, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 143, 1, 140, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140, 1, 144, 1, 1, 1, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 1, 1, 1, 1, 1, 1, 1, 146, 1, 1, 1, 1, 1, 1, 1, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 1, 147, 1, 128, 1, 148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 147, 1, 128, 1, 149, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 150, 1, 128, 1, 128, 1, 151, 1, 128, 1, 152, 152, 152, 152, 152, 152, 152, 152, 152, 1, 152, 152, 153, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 154, 155, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 156, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 160, 159, 159, 161, 162, 162, 162, 163, 1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 1, 164, 164, 165, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 166, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 168, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, 171, 171, 173, 174, 174, 174, 175, 1, 176, 1, 164, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 164, 1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, 171, 171, 173, 174, 174, 174, 175, 1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 1, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 1, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 1, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 1, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 1, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 1, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 179, 1, 118, 1, 1, 1, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 118, 1, 1, 1, 1, 1, 1, 1, 181, 1, 182, 1, 1, 1, 183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 182, 1, 1, 1, 1, 1, 1, 1, 184, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 90, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 2, 0, 3, 5, 6, 71, 82, 84, 86, 89, 2, 3, 5, 6, 4, 2, 3, 5, 6, 71, 82, 84, 86, 89, 7, 8, 10, 11, 56, 58, 60, 63, 65, 67, 69, 9, 7, 8, 10, 11, 56, 58, 60, 63, 65, 67, 69, 12, 55, 13, 14, 16, 17, 15, 13, 14, 16, 17, 18, 19, 20, 22, 23, 21, 19, 20, 22, 23, 24, 25, 27, 28, 26, 24, 25, 27, 28, 29, 31, 32, 30, 29, 31, 32, 33, 34, 35, 37, 38, 48, 103, 106, 107, 108, 36, 34, 35, 37, 38, 39, 41, 42, 40, 39, 41, 42, 43, 44, 45, 47, 46, 44, 45, 47, 49, 50, 51, 53, 104, 57, 59, 61, 62, 64, 66, 68, 70, 72, 73, 74, 76, 77, 75, 73, 74, 76, 77, 78, 79, 81, 78, 79, 81, 80, 78, 79, 81, 83, 85, 87, 88, 90, 92, 93, 92, 109, 95, 96, 97, 98, 99, 100, 101, 102, 92, 93, 92, 109, 95, 96, 97, 98, 99, 100, 101, 102, 94, 104, 52, 105, 52, 105, 104, 52, 105, 54, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 4, 5, 4, 4, 4, 4, 4, 4, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 3, 0, 0, 4, 4, 5, 4, 0, 0, 0, 3, 6, 0, 4, 4, 5, 7, 0, 0, 3, 0, 0, 4, 4, 5, 4, 0, 3, 0, 0, 4, 5, 4, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 4, 0, 3, 0, 0, 4, 5, 4, 0, 0, 0, 3, 0, 4, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 4, 5, 4, 1, 1, 8, 0, 0, 3, 0, 4, 4, 5, 0, 0, 0, 0, 0, 9, 9, 10, 11, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 14, 0, 3, 4, 4, 5, 0, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 13, 13, 13, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 103 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 91 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::DateTimeElement) if data.nil? date_time = DateTimeStruct.new([]) # Parser state date_s = time_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin date_s = p end when 13 begin date_time.time_string = chars(data, time_s, p - 1) end when 9 begin end when 4 begin end when 3 begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end when 12 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 8 begin date_s = p end begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end when 6 begin date_time.date_string = chars(data, date_s, p - 1) end begin time_s = p end when 14 begin date_time.time_string = chars(data, time_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end when 10 begin end begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end when 11 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 5 begin end begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end when 2 begin begin stack[top] = cs top += 1 cs = 91 _goto_level = _again next end end begin date_s = p end when 7 begin end begin date_time.date_string = chars(data, date_s, p - 1) end begin time_s = p end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 13 begin date_time.time_string = chars(data, time_s, p - 1) end when 4 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 103 raise Mail::Field::IncompleteParseError.new(Mail::DateTimeElement, data, p) end date_time end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/date_time_parser.rl000066400000000000000000000026451436372131700214770ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine date_time; alphtype int; # Date action date_s { date_s = p } action date_e { date_time.date_string = chars(data, date_s, p-1) } # Time action time_s { time_s = p } action time_e { date_time.time_string = chars(data, time_s, p-1) } # No-op actions action comment_s {} action comment_e {} action phrase_s {} action phrase_e {} action qstr_s {} action qstr_e {} include rfc5322_date_time "rfc5322_date_time.rl"; main := date_time; }%% module Mail::Parsers module DateTimeParser extend Mail::ParserTools DateTimeStruct = Struct.new(:date_string, :time_string, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::DateTimeElement) if data.nil? date_time = DateTimeStruct.new([]) # Parser state date_s = time_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::DateTimeElement, data, p) end date_time end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/envelope_from_parser.rb000066400000000000000000004210641436372131700223720ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module EnvelopeFromParser extend Mail::ParserTools EnvelopeFromStruct = Struct.new(:address, :ctime_date, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 114, 114, 105, 105, 32, 32, 32, 83, 112, 117, 114, 114, 32, 32, 9, 57, 10, 10, 9, 32, 9, 57, 9, 57, 9, 40, 10, 10, 9, 32, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 10, 10, 9, 32, 9, 58, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 10, 10, 9, 32, 9, 58, 10, 10, 9, 32, 9, 58, 48, 57, 10, 10, 9, 32, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 40, 10, 10, 9, 32, 9, 57, 10, 10, 9, 32, 9, 57, 9, 40, 9, 58, 9, 40, 103, 103, 101, 101, 99, 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, 114, 121, 111, 111, 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 111, 111, 110, 110, 97, 117, 116, 116, 104, 117, 117, 117, 101, 101, 101, 101, 100, 100, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 10, 10, 9, 32, 101, 114, 97, 111, 97, 117, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 33, 244, 62, 62, 70, 87, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 64, 9, 87, 9, 64, 9, 244, 9, 64, 9, 87, 9, 64, 9, 244, 9, 46, 9, 87, 9, 46, 9, 244, 9, 57, 9, 40, 9, 40, 9, 244, 9, 40, 9, 87, 9, 40, 9, 244, 9, 64, 9, 87, 9, 64, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 87, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 244, 9, 64, 9, 87, 9, 64, 9, 64, 9, 87, 9, 64, 32, 32, 32, 87, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 236, 236, 1, 24, 1, 24, 236, 1, 24, 1, 24, 236, 236, 1, 24, 1, 24, 236, 1, 24, 64, 32, 64, 32, 48, 64, 16, 236, 1, 1, 1, 52, 6, 1, 1, 49, 1, 24, 49, 49, 32, 1, 24, 49, 1, 24, 49, 10, 50, 1, 24, 50, 49, 1, 24, 49, 10, 50, 1, 24, 50, 1, 24, 50, 10, 1, 24, 49, 1, 24, 49, 10, 32, 1, 24, 49, 1, 24, 49, 32, 50, 32, 1, 1, 1, 1, 1, 21, 1, 3, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 14, 1, 1, 1, 1, 244, 244, 1, 24, 1, 24, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 1, 24, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 1, 24, 14, 15, 21, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 1, 24, 236, 212, 1, 18, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 56, 79, 56, 236, 56, 79, 56, 236, 38, 79, 38, 236, 49, 32, 32, 236, 32, 79, 32, 236, 56, 79, 56, 236, 236, 236, 236, 236, 236, 236, 79, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 56, 79, 56, 56, 79, 56, 1, 56, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 237, 474, 476, 501, 503, 528, 765, 767, 792, 794, 819, 1056, 1293, 1295, 1320, 1322, 1347, 1584, 1586, 1611, 1676, 1709, 1774, 1807, 1856, 1921, 1938, 2175, 2177, 2179, 2181, 2234, 2241, 2243, 2245, 2295, 2297, 2322, 2372, 2422, 2455, 2457, 2482, 2532, 2534, 2559, 2609, 2620, 2671, 2673, 2698, 2749, 2799, 2801, 2826, 2876, 2887, 2938, 2940, 2965, 3016, 3018, 3043, 3094, 3105, 3107, 3132, 3182, 3184, 3209, 3259, 3270, 3303, 3305, 3330, 3380, 3382, 3407, 3457, 3490, 3541, 3574, 3576, 3578, 3580, 3582, 3584, 3606, 3608, 3612, 3614, 3623, 3625, 3627, 3629, 3631, 3633, 3635, 3637, 3639, 3661, 3663, 3678, 3680, 3682, 3684, 3686, 3931, 4176, 4178, 4203, 4205, 4230, 4443, 4508, 4541, 4606, 4639, 4688, 4753, 4770, 5016, 5081, 5114, 5179, 5212, 5261, 5326, 5343, 5345, 5370, 5607, 5672, 5705, 5770, 5803, 5852, 5917, 5934, 6171, 6416, 6418, 6443, 6689, 6754, 6787, 6852, 6885, 6934, 6999, 7016, 7081, 7114, 7179, 7212, 7261, 7326, 7343, 7588, 7833, 7835, 7860, 8106, 8171, 8204, 8269, 8302, 8351, 8416, 8433, 8670, 8915, 9160, 9162, 9187, 9189, 9214, 9279, 9312, 9377, 9410, 9459, 9524, 9541, 9787, 9852, 9885, 9950, 9983, 10032, 10097, 10114, 10116, 10141, 10143, 10168, 10183, 10199, 10221, 10466, 10711, 10713, 10738, 10984, 11049, 11082, 11147, 11180, 11229, 11294, 11311, 11556, 11558, 11583, 11648, 11681, 11746, 11779, 11828, 11893, 11910, 12155, 12400, 12402, 12427, 12429, 12454, 12700, 12765, 12798, 12863, 12896, 12945, 13010, 13027, 13272, 13274, 13299, 13301, 13326, 13563, 13776, 13778, 13797, 14042, 14287, 14289, 14314, 14560, 14625, 14658, 14723, 14756, 14805, 14870, 14887, 15124, 15181, 15261, 15318, 15555, 15612, 15692, 15749, 15986, 16025, 16105, 16144, 16381, 16431, 16464, 16497, 16734, 16767, 16847, 16880, 17117, 17174, 17254, 17311, 17548, 17785, 18022, 18259, 18496, 18733, 18970, 19050, 19287, 19524, 19761, 19998, 20235, 20472, 20709, 20946, 21183, 21420, 21657, 21714, 21794, 21851, 21908, 21988, 22045, 22047, 22104, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 7, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 10, 10, 12, 13, 13, 13, 14, 1, 15, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 17, 18, 17, 17, 17, 17, 17, 19, 1, 17, 17, 1, 17, 20, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 1, 1, 1, 17, 1, 17, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 1, 1, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 25, 26, 26, 26, 27, 1, 28, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 29, 1, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 1, 31, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 33, 34, 33, 33, 33, 33, 33, 35, 1, 33, 33, 1, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 43, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 44, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 1, 46, 1, 1, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 48, 49, 48, 48, 48, 48, 48, 50, 1, 48, 48, 1, 48, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1, 1, 1, 48, 1, 48, 1, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 1, 1, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 55, 55, 57, 58, 58, 58, 59, 1, 60, 1, 1, 1, 61, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 62, 63, 62, 62, 62, 62, 62, 64, 1, 62, 62, 1, 62, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 62, 1, 62, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 66, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 71, 72, 72, 72, 73, 1, 74, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 1, 75, 1, 76, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77, 1, 1, 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 77, 79, 1, 79, 79, 79, 79, 79, 80, 1, 79, 79, 1, 79, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 79, 1, 79, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 83, 83, 85, 86, 86, 86, 87, 1, 88, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 77, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 89, 1, 1, 1, 90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 89, 91, 1, 91, 91, 91, 91, 91, 92, 1, 91, 91, 1, 91, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 1, 91, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 95, 95, 97, 98, 98, 98, 99, 1, 100, 1, 101, 1, 102, 1, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 103, 1, 1, 104, 1, 105, 1, 1, 1, 106, 1, 1, 107, 108, 109, 1, 1, 1, 110, 1, 111, 1, 1, 1, 1, 112, 1, 113, 1, 114, 1, 114, 1, 1, 1, 115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 114, 1, 1, 1, 1, 1, 1, 1, 116, 1, 1, 1, 1, 1, 1, 1, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 1, 118, 1, 114, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 114, 1, 119, 1, 1, 1, 120, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 119, 1, 1, 1, 1, 1, 1, 1, 121, 1, 1, 1, 1, 1, 1, 1, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 1, 123, 1, 1, 1, 124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 125, 1, 1, 1, 1, 1, 1, 1, 126, 1, 1, 1, 1, 1, 1, 1, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 1, 123, 1, 1, 1, 124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 125, 1, 1, 1, 1, 1, 1, 1, 126, 1, 127, 1, 123, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 1, 125, 1, 1, 1, 128, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 125, 1, 1, 1, 1, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 131, 1, 125, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 125, 1, 132, 1, 1, 1, 133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 1, 1, 1, 1, 1, 1, 1, 134, 1, 1, 1, 1, 1, 1, 1, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 1, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 1, 136, 1, 1, 1, 137, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 136, 1, 1, 1, 1, 1, 1, 1, 138, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 139, 1, 140, 1, 136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 136, 1, 141, 1, 1, 1, 142, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 141, 1, 1, 1, 1, 1, 1, 1, 143, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 1, 139, 1, 1, 1, 145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 139, 1, 1, 1, 1, 1, 1, 1, 146, 1, 1, 1, 1, 1, 1, 1, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 1, 148, 1, 139, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 139, 1, 144, 1, 1, 1, 149, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 1, 1, 1, 1, 1, 1, 1, 150, 1, 1, 1, 1, 1, 1, 1, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 1, 152, 1, 1, 1, 153, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 1, 1, 1, 1, 1, 1, 1, 155, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 156, 1, 157, 1, 152, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 152, 1, 154, 1, 1, 1, 158, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 1, 1, 1, 1, 1, 1, 1, 159, 1, 1, 1, 1, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 156, 1, 161, 1, 154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 1, 162, 1, 1, 1, 163, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 162, 1, 1, 1, 1, 1, 1, 1, 164, 1, 1, 1, 1, 1, 1, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 1, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 1, 168, 1, 169, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 169, 1, 156, 1, 1, 1, 170, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 156, 1, 1, 1, 1, 1, 1, 1, 171, 1, 1, 1, 1, 1, 1, 1, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 1, 173, 1, 156, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 156, 1, 166, 1, 1, 1, 174, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 166, 1, 1, 1, 1, 1, 1, 1, 175, 1, 1, 1, 1, 1, 1, 1, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 1, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 1, 1, 180, 1, 181, 1, 177, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 179, 1, 1, 1, 182, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 1, 1, 183, 1, 1, 1, 1, 1, 1, 1, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 1, 184, 1, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 179, 1, 185, 1, 1, 1, 186, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 1, 1, 1, 1, 1, 1, 187, 1, 1, 1, 1, 1, 1, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 188, 1, 1, 1, 189, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 185, 1, 1, 1, 1, 1, 1, 1, 190, 1, 191, 1, 1, 1, 192, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 162, 1, 1, 1, 1, 1, 1, 1, 193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 166, 1, 194, 1, 1, 1, 195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 1, 1, 1, 1, 1, 1, 1, 196, 1, 113, 1, 197, 1, 113, 1, 198, 1, 113, 1, 199, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 200, 1, 113, 1, 113, 1, 113, 1, 201, 1, 113, 1, 1, 1, 1, 1, 1, 113, 1, 202, 1, 113, 1, 203, 1, 113, 1, 204, 1, 113, 1, 205, 1, 101, 1, 206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 205, 1, 101, 1, 207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 208, 1, 101, 1, 101, 1, 209, 1, 101, 1, 210, 210, 210, 210, 210, 210, 210, 210, 63, 1, 210, 210, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 63, 210, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 212, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 215, 215, 217, 218, 218, 218, 219, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 210, 210, 220, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 221, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 212, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 215, 215, 217, 218, 218, 218, 219, 1, 222, 1, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 210, 1, 223, 1, 224, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 224, 1, 221, 63, 221, 221, 221, 221, 221, 1, 1, 221, 221, 1, 221, 65, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 221, 1, 221, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 226, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 229, 230, 230, 230, 231, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 1, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 1, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 215, 215, 217, 218, 218, 218, 219, 1, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 1, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 1, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 1, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 1, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 1, 232, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63, 1, 77, 1, 1, 1, 78, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 77, 62, 63, 62, 62, 62, 62, 62, 80, 1, 62, 62, 1, 62, 65, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 62, 1, 62, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 71, 72, 72, 72, 73, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 1, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 1, 233, 1, 1, 1, 234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 233, 235, 236, 235, 235, 235, 235, 235, 237, 1, 235, 235, 1, 235, 238, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 1, 1, 1, 235, 1, 235, 1, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 239, 1, 1, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243, 242, 242, 244, 245, 245, 245, 246, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 66, 66, 247, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 248, 224, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 252, 251, 251, 253, 254, 254, 254, 255, 1, 256, 1, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 66, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 252, 251, 251, 253, 254, 254, 254, 255, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 257, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 259, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 260, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 263, 263, 265, 266, 266, 266, 267, 1, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1, 268, 268, 269, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 270, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 271, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 274, 274, 276, 277, 277, 277, 278, 1, 279, 1, 268, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 268, 1, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 274, 274, 276, 277, 277, 277, 278, 1, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 280, 1, 1, 1, 281, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 280, 282, 283, 282, 282, 282, 282, 282, 284, 1, 282, 282, 1, 282, 1, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 282, 1, 282, 1, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 287, 287, 289, 290, 290, 290, 291, 1, 292, 292, 292, 292, 292, 292, 292, 292, 293, 1, 292, 292, 294, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 293, 292, 1, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 295, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 299, 298, 298, 300, 301, 301, 301, 302, 1, 292, 292, 292, 292, 292, 292, 292, 292, 292, 1, 292, 292, 303, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 304, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 295, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 299, 298, 298, 300, 301, 301, 301, 302, 1, 305, 1, 292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 292, 1, 306, 1, 307, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 307, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 1, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 299, 298, 298, 300, 301, 301, 301, 302, 1, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 310, 1, 293, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 293, 1, 311, 1, 312, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 312, 1, 198, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 100, 1, 201, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 205, 1, 206, 1, 1, 1, 204, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 205, 1, 313, 313, 313, 313, 313, 313, 313, 313, 314, 1, 313, 313, 315, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 259, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 316, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 320, 319, 319, 321, 322, 322, 322, 323, 1, 324, 324, 324, 324, 324, 324, 324, 324, 324, 1, 324, 324, 325, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 326, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 330, 330, 332, 333, 333, 333, 334, 1, 335, 1, 324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 324, 1, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 330, 330, 332, 333, 333, 333, 334, 1, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 1, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 1, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 1, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 1, 324, 324, 324, 324, 324, 324, 324, 324, 336, 1, 324, 324, 337, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 336, 324, 270, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 330, 330, 332, 333, 333, 333, 334, 1, 338, 1, 336, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 1, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 1, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 1, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 1, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 1, 342, 342, 342, 342, 342, 342, 342, 342, 343, 1, 342, 342, 344, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 343, 342, 345, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 346, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 348, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, 350, 349, 349, 351, 352, 352, 352, 353, 1, 354, 354, 354, 354, 354, 354, 354, 354, 354, 1, 354, 354, 355, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 356, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 360, 360, 362, 363, 363, 363, 364, 1, 365, 1, 354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 354, 1, 366, 1, 367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 367, 1, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 360, 360, 362, 363, 363, 363, 364, 1, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 1, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 1, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 1, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 1, 354, 354, 354, 354, 354, 354, 354, 354, 368, 1, 354, 354, 369, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 368, 354, 370, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 357, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, 359, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 360, 360, 362, 363, 363, 363, 364, 1, 371, 1, 368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 368, 1, 372, 1, 373, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 373, 1, 374, 1, 1, 1, 375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 374, 376, 377, 376, 376, 376, 376, 376, 378, 1, 376, 376, 1, 376, 379, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 1, 1, 376, 1, 376, 1, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 1, 1, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 381, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, 383, 382, 382, 384, 385, 385, 385, 386, 1, 304, 293, 304, 304, 304, 304, 304, 1, 1, 304, 304, 1, 304, 387, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 1, 304, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 388, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 389, 309, 309, 390, 391, 391, 391, 392, 1, 393, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 399, 399, 400, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 401, 402, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 403, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 405, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 407, 406, 406, 408, 409, 409, 409, 410, 1, 411, 411, 411, 411, 411, 411, 411, 411, 411, 1, 411, 411, 412, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 413, 414, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 415, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 419, 418, 418, 420, 421, 421, 421, 422, 1, 423, 1, 411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 411, 1, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 417, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 419, 418, 418, 420, 421, 421, 421, 422, 1, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 424, 1, 1, 1, 425, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 426, 339, 293, 339, 339, 339, 339, 339, 427, 1, 339, 339, 1, 339, 428, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 339, 1, 339, 429, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 430, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 431, 341, 341, 432, 433, 433, 433, 434, 1, 30, 1, 1, 1, 435, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 436, 1, 1, 1, 1, 1, 1, 1, 437, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 438, 1, 30, 1, 1, 1, 435, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 436, 1, 1, 1, 1, 1, 1, 1, 437, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 438, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 439, 1, 1, 1, 440, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 441, 1, 1, 1, 1, 1, 1, 1, 442, 1, 1, 1, 1, 1, 280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 1, 1, 1, 1, 1, 1, 1, 446, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 1, 1, 1, 1, 1, 1, 1, 446, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 448, 1, 1, 1, 449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 450, 1, 1, 1, 1, 1, 1, 1, 451, 1, 1, 1, 1, 1, 280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 452, 1, 76, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 62, 63, 62, 62, 62, 62, 62, 455, 1, 62, 62, 1, 62, 456, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 62, 1, 62, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 69, 69, 71, 72, 72, 72, 73, 1, 76, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 1, 1, 1, 1, 1, 1, 1, 455, 1, 1, 1, 1, 1, 77, 1, 76, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 1, 1, 1, 1, 1, 1, 1, 455, 1, 1, 1, 1, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 457, 1, 1, 1, 458, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 1, 1, 1, 1, 1, 1, 460, 1, 1, 1, 1, 1, 89, 1, 76, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 79, 1, 79, 79, 79, 79, 79, 455, 1, 79, 79, 1, 79, 77, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 79, 1, 79, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 83, 83, 85, 86, 86, 86, 87, 1, 169, 1, 1, 1, 461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 169, 1, 1, 1, 1, 1, 1, 1, 462, 1, 1, 1, 1, 1, 1, 1, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 1, 169, 1, 1, 1, 461, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 169, 1, 1, 1, 1, 1, 1, 1, 462, 1, 463, 1, 1, 1, 464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 463, 1, 1, 1, 1, 1, 1, 1, 465, 1, 224, 1, 1, 1, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 467, 221, 63, 221, 221, 221, 221, 221, 468, 1, 221, 221, 1, 221, 65, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 221, 1, 221, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 226, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 227, 227, 229, 230, 230, 230, 231, 1, 224, 1, 1, 1, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 467, 1, 1, 1, 1, 1, 1, 1, 468, 1, 224, 1, 1, 1, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 467, 1, 1, 1, 1, 1, 1, 1, 468, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 469, 1, 1, 1, 470, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 471, 1, 1, 1, 1, 1, 1, 1, 472, 1, 473, 1, 1, 1, 474, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 475, 304, 293, 304, 304, 304, 304, 304, 476, 1, 304, 304, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 1, 304, 429, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 388, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 389, 309, 309, 390, 391, 391, 391, 392, 1, 307, 1, 1, 1, 477, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 478, 1, 1, 1, 1, 1, 1, 1, 479, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 438, 1, 307, 1, 1, 1, 477, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 478, 1, 1, 1, 1, 1, 1, 1, 479, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 438, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 480, 1, 1, 1, 481, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 482, 1, 1, 1, 1, 1, 1, 1, 483, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 1, 484, 1, 1, 1, 485, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 486, 339, 487, 339, 339, 339, 339, 339, 488, 1, 339, 339, 1, 339, 304, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 339, 1, 339, 429, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 430, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 431, 341, 341, 432, 433, 433, 433, 434, 1, 312, 1, 1, 1, 489, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 490, 33, 34, 33, 33, 33, 33, 33, 491, 1, 33, 33, 1, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 438, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 312, 1, 1, 1, 489, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 490, 33, 34, 33, 33, 33, 33, 33, 491, 1, 33, 33, 1, 33, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 438, 33, 33, 33, 33, 33, 492, 33, 33, 33, 33, 33, 33, 493, 33, 33, 33, 33, 33, 494, 495, 33, 33, 496, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 497, 1, 1, 1, 498, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 499, 282, 283, 282, 282, 282, 282, 282, 500, 1, 282, 282, 1, 282, 1, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 282, 1, 282, 443, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 287, 287, 289, 290, 290, 290, 291, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 501, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 503, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 503, 1, 1, 1, 1, 1, 1, 1, 446, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447, 103, 1, 1, 104, 1, 504, 1, 1, 1, 106, 1, 1, 505, 108, 109, 1, 1, 1, 506, 397, 1, 1, 398, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 507, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 508, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 507, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 509, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 510, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 33, 511, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 45, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445, 33, 1, 33, 33, 33, 33, 33, 446, 1, 33, 33, 1, 33, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 1, 33, 447, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 33, 33, 33, 33, 33, 33, 502, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 424, 1, 1, 1, 425, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 426, 304, 293, 304, 304, 304, 304, 304, 427, 1, 304, 304, 1, 304, 428, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 1, 304, 429, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 388, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 389, 309, 309, 390, 391, 391, 391, 392, 1, 512, 1, 1, 1, 513, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 514, 304, 293, 304, 304, 304, 304, 304, 515, 1, 304, 304, 1, 304, 428, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 1, 304, 516, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 388, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 389, 309, 309, 390, 391, 391, 391, 392, 1, 367, 1, 1, 1, 517, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 518, 1, 1, 1, 1, 1, 1, 1, 519, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 520, 1, 367, 1, 1, 1, 517, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 518, 1, 1, 1, 1, 1, 1, 1, 519, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 520, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 521, 1, 1, 1, 522, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 523, 1, 1, 1, 1, 1, 1, 1, 524, 1, 1, 1, 1, 1, 280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 525, 1, 373, 1, 1, 1, 526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 527, 1, 1, 1, 1, 1, 1, 1, 528, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 529, 1, 373, 1, 1, 1, 526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 527, 1, 1, 1, 1, 1, 1, 1, 528, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 529, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 530, 1, 1, 1, 531, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 1, 1, 1, 1, 1, 1, 1, 533, 1, 1, 1, 1, 1, 280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 534, 1, 535, 1, 536, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 394, 1, 1, 1, 1, 1, 1, 395, 1, 1, 1, 1, 1, 396, 397, 1, 1, 398, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 2, 0, 3, 257, 222, 241, 242, 243, 215, 216, 217, 218, 219, 220, 221, 2, 3, 257, 222, 241, 242, 215, 216, 217, 218, 219, 220, 221, 4, 6, 258, 7, 8, 261, 159, 171, 152, 153, 154, 155, 156, 157, 158, 9, 11, 262, 13, 14, 265, 108, 140, 114, 141, 133, 134, 135, 136, 137, 138, 139, 13, 14, 265, 108, 140, 114, 141, 133, 134, 135, 136, 137, 138, 139, 15, 17, 266, 18, 19, 269, 28, 21, 22, 23, 24, 25, 26, 27, 20, 18, 19, 269, 28, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 84, 86, 88, 91, 93, 95, 97, 34, 83, 35, 36, 37, 39, 40, 38, 36, 37, 39, 40, 41, 42, 44, 82, 43, 45, 47, 48, 46, 44, 45, 47, 48, 49, 50, 52, 53, 51, 49, 50, 52, 53, 54, 56, 57, 55, 54, 56, 57, 58, 59, 61, 81, 68, 60, 62, 64, 65, 63, 61, 62, 64, 65, 68, 270, 67, 271, 69, 71, 72, 70, 69, 71, 72, 73, 74, 76, 80, 75, 77, 79, 78, 76, 77, 79, 73, 74, 80, 58, 59, 81, 41, 42, 82, 85, 87, 89, 90, 92, 94, 96, 98, 100, 102, 104, 105, 107, 109, 130, 122, 123, 124, 125, 126, 127, 128, 129, 110, 273, 111, 113, 274, 115, 116, 117, 118, 119, 120, 121, 131, 13, 14, 265, 108, 140, 114, 141, 133, 134, 135, 136, 137, 138, 139, 142, 144, 145, 146, 147, 148, 149, 150, 151, 143, 160, 161, 262, 163, 164, 165, 166, 167, 168, 169, 170, 160, 161, 262, 163, 164, 165, 166, 167, 168, 169, 170, 162, 7, 8, 261, 159, 171, 152, 153, 154, 155, 156, 157, 158, 173, 172, 193, 185, 186, 187, 188, 189, 190, 191, 192, 174, 277, 175, 177, 278, 178, 180, 194, 196, 282, 201, 212, 213, 204, 205, 206, 207, 208, 209, 210, 211, 201, 202, 298, 204, 205, 206, 207, 208, 209, 210, 211, 203, 212, 213, 214, 257, 215, 217, 223, 236, 237, 303, 228, 229, 230, 231, 232, 233, 234, 235, 223, 224, 299, 228, 229, 230, 231, 232, 233, 234, 235, 225, 227, 300, 236, 237, 303, 238, 240, 303, 2, 3, 257, 222, 241, 242, 215, 216, 217, 218, 219, 220, 221, 242, 179, 181, 182, 183, 184, 306, 29, 99, 101, 103, 106, 246, 247, 246, 308, 249, 250, 251, 252, 253, 254, 255, 256, 246, 247, 246, 308, 249, 250, 251, 252, 253, 254, 255, 256, 248, 258, 5, 259, 260, 281, 12, 216, 218, 219, 220, 221, 5, 259, 260, 12, 258, 5, 259, 260, 12, 10, 263, 264, 12, 262, 10, 263, 264, 12, 16, 267, 268, 132, 266, 16, 267, 268, 66, 272, 271, 66, 272, 112, 275, 276, 274, 112, 275, 276, 278, 176, 279, 280, 176, 279, 280, 278, 176, 279, 280, 282, 195, 283, 200, 284, 195, 283, 284, 285, 289, 291, 293, 296, 282, 195, 283, 284, 286, 287, 288, 197, 198, 199, 290, 292, 294, 295, 297, 300, 226, 301, 302, 12, 226, 301, 302, 12, 300, 226, 301, 302, 12, 239, 304, 305, 12, 303, 239, 304, 305, 12, 307, 244, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 1, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 8, 8, 9, 8, 0, 0, 0, 5, 0, 0, 5, 0, 0, 8, 8, 9, 8, 0, 0, 5, 0, 0, 8, 8, 9, 8, 0, 5, 0, 0, 8, 9, 8, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 8, 8, 9, 8, 8, 0, 0, 0, 0, 5, 0, 0, 8, 9, 8, 0, 0, 0, 5, 0, 0, 5, 0, 8, 8, 9, 8, 8, 9, 8, 8, 9, 8, 8, 9, 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, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 8, 8, 13, 13, 9, 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 15, 15, 16, 17, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 5, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 19, 21, 0, 22, 0, 0, 0, 0, 0, 0, 23, 5, 24, 8, 8, 25, 9, 26, 0, 27, 5, 0, 8, 8, 28, 9, 8, 0, 29, 5, 0, 8, 8, 30, 9, 0, 5, 8, 8, 9, 0, 29, 5, 8, 8, 30, 9, 20, 20, 19, 21, 0, 23, 5, 8, 8, 25, 9, 20, 20, 19, 0, 21, 0, 23, 5, 14, 14, 14, 14, 14, 8, 8, 25, 9, 0, 0, 27, 14, 14, 14, 0, 0, 0, 0, 0, 20, 20, 33, 21, 34, 0, 35, 5, 36, 8, 8, 37, 9, 38, 0, 39, 5, 40, 8, 8, 41, 9, 42, 27, 27, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 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, 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, 19, 23, 23, 25, 27, 27, 27, 28, 29, 29, 29, 30, 29, 31, 31, 32, 29, 29, 29, 30, 19, 23, 23, 25, 19, 23, 23, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 19, 33, 35, 35, 37, 39, 39, 41, 27, 27, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 257 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 245 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) envelope_from = EnvelopeFromStruct.new return envelope_from if Mail::Utilities.blank?(data) # Parser state address_s = ctime_date_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 3 begin address_s = p end when 27 begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 14 begin ctime_date_s = p end when 8 begin end when 15 begin end when 6 begin end when 24 begin end when 20 begin end when 4 begin end when 12 begin end when 10 begin end when 40 begin end when 5 begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 18 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 1 begin address_s = p end begin end when 28 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 26 begin end begin end when 13 begin end begin end when 42 begin end begin end when 9 begin end begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 16 begin end begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 17 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 29 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 7 begin end begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 23 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 36 begin end begin end when 22 begin end begin end when 21 begin end begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 11 begin end begin end when 39 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 2 begin address_s = p end begin end begin begin stack[top] = cs top += 1 cs = 245 _goto_level = _again next end end when 30 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 25 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 38 begin end begin end begin end when 41 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 35 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 19 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 34 begin end begin end begin end when 37 begin end begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 33 begin end begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 27 begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 31 begin envelope_from.ctime_date = chars(data, ctime_date_s, p - 1) end when 28 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 32 begin end begin envelope_from.ctime_date = chars(data, ctime_date_s, p - 1) end when 29 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 23 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 39 begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 30 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 25 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 41 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 35 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 19 begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 37 begin end begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end when 33 begin end begin end begin end begin envelope_from.address = chars(data, address_s, p - 1).rstrip end end end end if _goto_level <= _out break end end end if p != eof || cs < 257 raise Mail::Field::IncompleteParseError.new(Mail::EnvelopeFromElement, data, p) end envelope_from end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/envelope_from_parser.rl000066400000000000000000000040061436372131700223750ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine envelope_from; alphtype int; # Address action address_s { address_s = p } action address_e { envelope_from.address = chars(data, address_s, p-1).rstrip } # ctime_date action ctime_date_s { ctime_date_s = p } action ctime_date_e { envelope_from.ctime_date = chars(data, ctime_date_s, p-1) } # No-op actions action angle_addr_s {} action comment_e {} action comment_s {} action domain_e {} action domain_s {} action local_dot_atom_e {} action local_dot_atom_pre_comment_e {} action local_dot_atom_pre_comment_s {} action local_dot_atom_s {} action phrase_s {} action phrase_e {} action qstr_e {} action qstr_s {} action date_s {} action date_e {} action time_s {} action time_e {} action local_quoted_string_s {} action local_quoted_string_e {} action obs_domain_list_s {} action obs_domain_list_e {} action group_name_s {} action group_name_e {} action msg_id_s {} action msg_id_e {} action received_tokens_s {} action received_tokens_e {} include rfc5322 "rfc5322.rl"; main := envelope_from; }%% module Mail::Parsers module EnvelopeFromParser extend Mail::ParserTools EnvelopeFromStruct = Struct.new(:address, :ctime_date, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) envelope_from = EnvelopeFromStruct.new return envelope_from if Mail::Utilities.blank?(data) # Parser state address_s = ctime_date_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::EnvelopeFromElement, data, p) end envelope_from end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/message_ids_parser.rb000066400000000000000000006272441436372131700220250ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module MessageIdsParser extend Mail::ParserTools MessageIdsStruct = Struct.new(:message_ids, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 126, 10, 10, 9, 32, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 46, 46, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 46, 46, 33, 244, 33, 244, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 33, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 126, 32, 126, 32, 126, 32, 126, 32, 126, 9, 244, 9, 244, 9, 244, 9, 244, 32, 244, 9, 244, 9, 126, 32, 244, 9, 244, 9, 126, 32, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 33, 244, 9, 244, 9, 244, 9, 126, 32, 126, 32, 126, 32, 126, 32, 126, 9, 244, 9, 244, 9, 244, 9, 126, 9, 244, 9, 244, 9, 244, 9, 126, 9, 244, 9, 244, 9, 244, 9, 126, 32, 244, 32, 244, 32, 244, 32, 244, 33, 126, 1, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 126, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 126, 9, 126, 9, 126, 9, 126, 9, 126, 9, 244, 9, 126, 9, 126, 9, 126, 9, 244, 9, 244, 9, 244, 9, 126, 9, 126, 9, 244, 9, 126, 9, 126, 9, 126, 9, 244, 9, 126, 9, 244, 9, 244, 9, 244, 9, 126, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 118, 1, 24, 1, 24, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 1, 244, 244, 1, 24, 236, 54, 1, 24, 54, 1, 212, 212, 236, 54, 1, 24, 54, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 212, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 212, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 118, 95, 95, 95, 95, 236, 236, 236, 236, 213, 236, 118, 213, 236, 118, 213, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 56, 1, 24, 56, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 212, 236, 236, 118, 95, 95, 95, 95, 236, 236, 236, 118, 236, 236, 236, 118, 236, 236, 236, 118, 213, 213, 213, 213, 94, 244, 245, 64, 32, 64, 32, 48, 64, 16, 118, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 118, 118, 118, 118, 118, 236, 118, 118, 118, 236, 236, 236, 118, 118, 236, 118, 118, 118, 236, 118, 236, 236, 236, 118, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 119, 121, 146, 148, 173, 410, 647, 649, 674, 911, 968, 970, 995, 1052, 1289, 1526, 1528, 1553, 1790, 1847, 1849, 1874, 1931, 2168, 2405, 2407, 2432, 2669, 2724, 2726, 2751, 2806, 3043, 3280, 3282, 3307, 3544, 3609, 3642, 3707, 3740, 3789, 3854, 3871, 4108, 4110, 4355, 4600, 4602, 4627, 4864, 4919, 4921, 4946, 5001, 5003, 5216, 5429, 5666, 5721, 5723, 5748, 5803, 6048, 6293, 6295, 6320, 6566, 6631, 6664, 6729, 6762, 6811, 6876, 6893, 6895, 6920, 7133, 7198, 7231, 7296, 7329, 7378, 7443, 7460, 7525, 7558, 7623, 7656, 7705, 7770, 7787, 8033, 8098, 8131, 8196, 8229, 8278, 8343, 8360, 8362, 8387, 8624, 8689, 8722, 8787, 8820, 8869, 8934, 8951, 9188, 9401, 9646, 9648, 9673, 9919, 9984, 10017, 10082, 10115, 10164, 10229, 10246, 10483, 10720, 10839, 10935, 11031, 11127, 11223, 11460, 11697, 11934, 12171, 12385, 12622, 12741, 12955, 13192, 13311, 13525, 13590, 13623, 13688, 13721, 13770, 13835, 13852, 14097, 14342, 14344, 14369, 14615, 14680, 14713, 14778, 14811, 14860, 14925, 14942, 15179, 15424, 15669, 15671, 15696, 15933, 15990, 15992, 16017, 16074, 16311, 16548, 16550, 16575, 16812, 16869, 16871, 16896, 16953, 17198, 17443, 17445, 17470, 17716, 17781, 17814, 17879, 17912, 17961, 18026, 18043, 18045, 18070, 18135, 18168, 18233, 18266, 18315, 18380, 18397, 18462, 18495, 18560, 18593, 18642, 18707, 18724, 18970, 19035, 19068, 19133, 19166, 19215, 19280, 19297, 19299, 19324, 19561, 19798, 19800, 19825, 20062, 20307, 20552, 20554, 20579, 20816, 21062, 21127, 21160, 21225, 21258, 21307, 21372, 21389, 21634, 21636, 21661, 21726, 21759, 21824, 21857, 21906, 21971, 21988, 22233, 22478, 22480, 22505, 22742, 22799, 22801, 22826, 22883, 23129, 23194, 23227, 23292, 23325, 23374, 23439, 23456, 23701, 23703, 23728, 23785, 23787, 23812, 23869, 24106, 24319, 24556, 24793, 24912, 25008, 25104, 25200, 25296, 25533, 25770, 26007, 26126, 26363, 26600, 26837, 26956, 27193, 27430, 27667, 27786, 28000, 28214, 28428, 28642, 28737, 28982, 29228, 29293, 29326, 29391, 29424, 29473, 29538, 29555, 29674, 29919, 30164, 30166, 30191, 30437, 30502, 30535, 30600, 30633, 30682, 30747, 30764, 30883, 31002, 31121, 31240, 31359, 31596, 31715, 31834, 31953, 32190, 32427, 32664, 32783, 32902, 33139, 33258, 33377, 33496, 33733, 33852, 34089, 34326, 34563, 34682, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, 3, 3, 4, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 6, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 7, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 9, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 12, 13, 12, 12, 12, 12, 12, 14, 1, 12, 12, 15, 12, 16, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 15, 1, 1, 12, 1, 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 23, 1, 24, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 26, 13, 26, 26, 26, 26, 26, 27, 1, 26, 26, 1, 26, 28, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 1, 1, 26, 1, 26, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 1, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 23, 1, 29, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 1, 30, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 32, 33, 32, 32, 32, 32, 32, 34, 1, 32, 32, 1, 32, 35, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 32, 36, 32, 37, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 45, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 47, 1, 1, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 1, 51, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 1, 52, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 54, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 57, 1, 58, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 60, 61, 60, 60, 60, 60, 60, 62, 1, 60, 60, 1, 60, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 1, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 58, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 60, 61, 60, 60, 60, 60, 60, 62, 1, 60, 60, 1, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 1, 60, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 71, 1, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 1, 72, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 60, 1, 60, 60, 60, 60, 60, 74, 1, 60, 60, 1, 60, 75, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 76, 60, 77, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 72, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 74, 1, 1, 1, 1, 1, 75, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 1, 77, 1, 78, 1, 72, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 79, 1, 1, 1, 80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 79, 1, 1, 1, 1, 1, 1, 1, 81, 1, 1, 1, 1, 1, 82, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 84, 1, 85, 1, 1, 1, 86, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 88, 89, 88, 88, 88, 88, 88, 90, 1, 88, 88, 91, 88, 92, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 91, 1, 1, 88, 76, 88, 91, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 93, 1, 1, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 96, 96, 98, 99, 99, 99, 100, 1, 101, 1, 1, 1, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 101, 103, 104, 103, 103, 103, 103, 103, 105, 1, 103, 103, 1, 103, 106, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 103, 1, 103, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 107, 1, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 115, 1, 101, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 101, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 116, 103, 104, 103, 103, 103, 103, 103, 118, 1, 103, 103, 1, 103, 119, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 103, 120, 103, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 116, 1, 1, 1, 1, 1, 1, 1, 118, 1, 1, 1, 1, 1, 121, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 122, 1, 116, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 116, 1, 123, 1, 1, 1, 124, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 123, 1, 1, 1, 1, 1, 1, 1, 125, 1, 1, 1, 1, 1, 126, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 130, 1, 130, 130, 130, 130, 130, 131, 1, 130, 130, 1, 130, 63, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 1, 130, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 130, 1, 130, 130, 130, 130, 130, 131, 1, 130, 130, 1, 130, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 1, 130, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 139, 1, 128, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 116, 130, 1, 130, 130, 130, 130, 130, 118, 1, 130, 130, 1, 130, 121, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 120, 130, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 1, 140, 1, 1, 1, 141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 140, 142, 1, 142, 142, 142, 142, 142, 143, 1, 142, 142, 1, 142, 1, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 1, 1, 1, 142, 1, 142, 1, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 1, 1, 1, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 146, 146, 148, 149, 149, 149, 150, 1, 76, 1, 151, 151, 151, 151, 151, 151, 151, 151, 104, 1, 151, 151, 152, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 104, 151, 1, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 153, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 156, 156, 158, 159, 159, 159, 160, 1, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 151, 151, 161, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 162, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 153, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 156, 156, 158, 159, 159, 159, 160, 1, 163, 1, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 151, 1, 164, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 164, 162, 104, 162, 162, 162, 162, 162, 166, 1, 162, 162, 1, 162, 167, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 120, 162, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 164, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 164, 1, 1, 1, 1, 1, 1, 1, 166, 1, 1, 1, 1, 1, 175, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 176, 1, 164, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 164, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 1, 1, 1, 1, 1, 1, 1, 179, 1, 1, 1, 1, 1, 180, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127, 1, 63, 1, 162, 104, 162, 162, 162, 162, 162, 1, 1, 162, 162, 1, 162, 181, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 1, 162, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 162, 104, 162, 162, 162, 162, 162, 1, 1, 162, 162, 1, 162, 182, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 1, 162, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 183, 1, 1, 1, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 185, 186, 185, 185, 185, 185, 185, 187, 1, 185, 185, 1, 185, 188, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 185, 120, 185, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 183, 1, 1, 1, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 1, 1, 1, 1, 1, 1, 1, 187, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 120, 1, 196, 1, 183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 183, 1, 197, 1, 1, 1, 198, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 197, 1, 1, 1, 1, 1, 1, 1, 199, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127, 1, 200, 200, 200, 200, 200, 200, 200, 200, 186, 1, 200, 200, 201, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 186, 200, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 202, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, 205, 205, 207, 208, 208, 208, 209, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1, 200, 200, 210, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 185, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 202, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, 205, 205, 207, 208, 208, 208, 209, 1, 211, 1, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 200, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 206, 205, 205, 207, 208, 208, 208, 209, 1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 1, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 1, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 1, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 1, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 1, 212, 1, 186, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 186, 1, 185, 186, 185, 185, 185, 185, 185, 1, 1, 185, 185, 1, 185, 188, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 185, 1, 185, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 1, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 1, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 1, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 1, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 1, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 1, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 1, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 156, 156, 158, 159, 159, 159, 160, 1, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 213, 1, 104, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 104, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 128, 103, 104, 103, 103, 103, 103, 103, 131, 1, 103, 103, 1, 103, 181, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 103, 1, 103, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 1, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 1, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 1, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 1, 214, 1, 1, 1, 215, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 214, 216, 217, 216, 216, 216, 216, 216, 218, 1, 216, 216, 1, 216, 219, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 1, 1, 1, 216, 1, 216, 1, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 220, 1, 1, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 225, 226, 226, 226, 227, 1, 162, 104, 162, 162, 162, 162, 162, 1, 1, 162, 162, 1, 162, 106, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 1, 162, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 107, 107, 228, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 229, 164, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 234, 235, 235, 235, 236, 1, 237, 1, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 107, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, 232, 232, 234, 235, 235, 235, 236, 1, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 1, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 1, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 1, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 1, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 1, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 1, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 1, 101, 1, 1, 1, 102, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 238, 239, 104, 239, 239, 239, 239, 239, 105, 1, 239, 239, 91, 239, 240, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 91, 1, 1, 239, 76, 239, 91, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 107, 1, 1, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 241, 239, 104, 239, 239, 239, 239, 239, 118, 1, 239, 239, 91, 239, 242, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 91, 1, 1, 239, 120, 239, 91, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 1, 1, 1, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 241, 91, 1, 91, 91, 91, 91, 91, 118, 1, 91, 91, 91, 91, 243, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 91, 120, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 91, 91, 1, 91, 91, 91, 91, 91, 1, 1, 91, 91, 91, 91, 244, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 91, 76, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 91, 91, 1, 91, 91, 91, 91, 91, 1, 1, 91, 91, 91, 91, 245, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 91, 76, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 91, 91, 1, 91, 91, 91, 91, 91, 1, 1, 91, 91, 91, 91, 246, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 91, 76, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 247, 247, 1, 247, 247, 247, 247, 247, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 247, 76, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 248, 249, 1, 249, 249, 249, 249, 249, 131, 1, 249, 249, 91, 249, 245, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 91, 1, 1, 249, 76, 249, 91, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 248, 249, 1, 249, 249, 249, 249, 249, 131, 1, 249, 249, 91, 249, 244, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 91, 1, 1, 249, 76, 249, 91, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 116, 1, 1, 1, 117, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 241, 249, 1, 249, 249, 249, 249, 249, 118, 1, 249, 249, 91, 249, 243, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 91, 1, 1, 249, 120, 249, 91, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 134, 134, 136, 137, 137, 137, 138, 1, 128, 1, 1, 1, 129, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 248, 239, 104, 239, 239, 239, 239, 239, 131, 1, 239, 239, 91, 239, 250, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 91, 1, 1, 239, 76, 239, 91, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 1, 1, 1, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 110, 110, 112, 113, 113, 113, 114, 1, 91, 251, 104, 251, 251, 251, 251, 251, 1, 1, 251, 251, 91, 251, 252, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 91, 1, 1, 251, 76, 251, 91, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 164, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 251, 104, 251, 251, 251, 251, 251, 166, 1, 251, 251, 91, 251, 254, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 91, 1, 1, 251, 120, 251, 91, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 164, 1, 1, 1, 165, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 253, 91, 1, 91, 91, 91, 91, 91, 166, 1, 91, 91, 91, 91, 255, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 91, 120, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 1, 1, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 1, 91, 251, 104, 251, 251, 251, 251, 251, 1, 1, 251, 251, 91, 251, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 91, 1, 1, 251, 76, 251, 91, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 172, 173, 173, 173, 174, 1, 183, 1, 1, 1, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 256, 257, 186, 257, 257, 257, 257, 257, 187, 1, 257, 257, 247, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 247, 1, 1, 257, 120, 257, 247, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 183, 1, 1, 1, 184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 256, 247, 1, 247, 247, 247, 247, 247, 187, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 247, 120, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 247, 257, 186, 257, 257, 257, 257, 257, 1, 1, 257, 257, 247, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 247, 1, 1, 257, 76, 257, 247, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 1, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 259, 259, 260, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 261, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 262, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 265, 265, 267, 268, 268, 268, 269, 1, 270, 270, 270, 270, 270, 270, 270, 270, 270, 1, 270, 270, 271, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 272, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 273, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 278, 279, 279, 279, 280, 1, 281, 1, 270, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 270, 1, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 276, 276, 278, 279, 279, 279, 280, 1, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 1, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1, 282, 1, 1, 1, 283, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 282, 284, 285, 284, 284, 284, 284, 284, 286, 1, 284, 284, 1, 284, 1, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 284, 1, 284, 1, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 290, 289, 289, 291, 292, 292, 292, 293, 1, 294, 294, 294, 294, 294, 294, 294, 294, 33, 1, 294, 294, 295, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 33, 294, 1, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 296, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 299, 299, 301, 302, 302, 302, 303, 1, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 294, 294, 304, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 305, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 296, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 299, 299, 301, 302, 302, 302, 303, 1, 306, 1, 294, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 294, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 307, 305, 33, 305, 305, 305, 305, 305, 309, 1, 305, 305, 1, 305, 310, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 36, 305, 37, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 318, 1, 1, 1, 319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 318, 1, 1, 1, 1, 1, 1, 1, 320, 1, 1, 1, 1, 1, 321, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 1, 322, 1, 318, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 318, 1, 323, 1, 1, 1, 324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 323, 1, 1, 1, 1, 1, 1, 1, 325, 1, 1, 1, 1, 1, 326, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 57, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 307, 305, 33, 305, 305, 305, 305, 305, 309, 1, 305, 305, 1, 305, 327, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 36, 305, 37, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 307, 305, 33, 305, 305, 305, 305, 305, 309, 1, 305, 305, 1, 305, 328, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 36, 305, 37, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 329, 1, 330, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 330, 1, 331, 1, 1, 1, 332, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 331, 333, 334, 333, 333, 333, 333, 333, 335, 1, 333, 333, 1, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 333, 36, 333, 37, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 343, 1, 1, 1, 344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 1, 1, 1, 1, 1, 1, 345, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 1, 346, 1, 343, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 347, 1, 1, 1, 348, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 347, 1, 1, 1, 1, 1, 1, 1, 349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 57, 1, 350, 350, 350, 350, 350, 350, 350, 350, 334, 1, 350, 350, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 334, 350, 1, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 352, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 350, 350, 350, 350, 350, 350, 350, 350, 350, 1, 350, 350, 360, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 333, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 352, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 361, 1, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 350, 1, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 1, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 1, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 1, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 1, 362, 1, 334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 334, 1, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 1, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 1, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 1, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 1, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 1, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 299, 299, 301, 302, 302, 302, 303, 1, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 1, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 1, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 1, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 1, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 1, 363, 1, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 33, 1, 364, 1, 1, 1, 365, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 364, 32, 366, 32, 32, 32, 32, 32, 367, 1, 32, 32, 1, 32, 327, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 32, 36, 32, 37, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 368, 1, 1, 1, 369, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 368, 60, 61, 60, 60, 60, 60, 60, 370, 1, 60, 60, 1, 60, 321, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 49, 60, 50, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 371, 1, 368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 368, 1, 372, 1, 1, 1, 373, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 372, 284, 285, 284, 284, 284, 284, 284, 374, 1, 284, 284, 1, 284, 326, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 284, 56, 284, 57, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 290, 289, 289, 291, 292, 292, 292, 293, 1, 375, 375, 375, 375, 375, 375, 375, 375, 376, 1, 375, 375, 377, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 376, 375, 261, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 378, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 381, 381, 383, 384, 384, 384, 385, 1, 386, 386, 386, 386, 386, 386, 386, 386, 386, 1, 386, 386, 387, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 388, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 389, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, 392, 392, 394, 395, 395, 395, 396, 1, 397, 1, 386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 386, 1, 30, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 305, 33, 305, 305, 305, 305, 305, 34, 1, 305, 305, 1, 305, 35, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 36, 305, 37, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, 392, 392, 394, 395, 395, 395, 396, 1, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 1, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 1, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 1, 386, 386, 386, 386, 386, 386, 386, 386, 398, 1, 386, 386, 399, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 398, 386, 272, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 389, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, 392, 392, 394, 395, 395, 395, 396, 1, 400, 1, 398, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 398, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 1, 401, 401, 401, 401, 401, 401, 401, 401, 402, 1, 401, 401, 403, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 401, 404, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 405, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, 407, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, 409, 408, 408, 410, 411, 411, 411, 412, 1, 413, 413, 413, 413, 413, 413, 413, 413, 413, 1, 413, 413, 414, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 415, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 416, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 418, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 420, 419, 419, 421, 422, 422, 422, 423, 1, 424, 1, 413, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 413, 1, 425, 1, 1, 1, 426, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 425, 305, 33, 305, 305, 305, 305, 305, 427, 1, 305, 305, 1, 305, 428, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 429, 305, 430, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 431, 1, 1, 1, 432, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 431, 1, 1, 1, 1, 1, 1, 1, 433, 1, 1, 1, 1, 1, 434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 435, 1, 436, 1, 437, 1, 431, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 431, 1, 438, 1, 1, 1, 439, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 438, 1, 1, 1, 1, 1, 1, 1, 440, 1, 1, 1, 1, 1, 441, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 442, 1, 443, 1, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 418, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 420, 419, 419, 421, 422, 422, 422, 423, 1, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 1, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 1, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 1, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 1, 413, 413, 413, 413, 413, 413, 413, 413, 444, 1, 413, 413, 445, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 444, 413, 446, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 416, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 418, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 420, 419, 419, 421, 422, 422, 422, 423, 1, 447, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 444, 1, 448, 1, 1, 1, 449, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 1, 1, 1, 1, 1, 1, 1, 450, 1, 1, 1, 1, 1, 451, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 452, 1, 453, 1, 454, 1, 448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 1, 455, 1, 1, 1, 456, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 455, 1, 1, 1, 1, 1, 1, 1, 457, 1, 1, 1, 1, 1, 458, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 459, 1, 460, 1, 461, 1, 1, 1, 462, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 461, 463, 464, 463, 463, 463, 463, 463, 465, 1, 463, 463, 1, 463, 466, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 1, 1, 1, 463, 1, 463, 1, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 1, 1, 1, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 468, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 470, 469, 469, 471, 472, 472, 472, 473, 1, 305, 33, 305, 305, 305, 305, 305, 1, 1, 305, 305, 1, 305, 474, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 1, 305, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 24, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 475, 12, 13, 12, 12, 12, 12, 12, 27, 1, 12, 12, 15, 12, 476, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 15, 1, 1, 12, 76, 12, 77, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 23, 1, 30, 1, 1, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 477, 478, 33, 478, 478, 478, 478, 478, 34, 1, 478, 478, 15, 478, 479, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 15, 1, 1, 478, 36, 478, 37, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 1, 1, 1, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 45, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 480, 15, 1, 15, 15, 15, 15, 15, 47, 1, 15, 15, 15, 15, 481, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 49, 15, 50, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 15, 1, 15, 15, 15, 15, 15, 1, 1, 15, 15, 15, 15, 482, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 76, 15, 77, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 15, 1, 15, 15, 15, 15, 15, 1, 1, 15, 15, 15, 15, 483, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 76, 15, 77, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 15, 1, 15, 15, 15, 15, 15, 1, 1, 15, 15, 15, 15, 484, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 76, 15, 77, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 485, 485, 1, 485, 485, 485, 485, 485, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 485, 76, 485, 77, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 58, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 486, 487, 61, 487, 487, 487, 487, 487, 62, 1, 487, 487, 15, 487, 483, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 15, 1, 1, 487, 76, 487, 77, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 58, 1, 1, 1, 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 486, 487, 61, 487, 487, 487, 487, 487, 62, 1, 487, 487, 15, 487, 482, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 15, 1, 1, 487, 76, 487, 77, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 72, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 487, 1, 487, 487, 487, 487, 487, 74, 1, 487, 487, 15, 487, 489, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 15, 1, 1, 487, 76, 487, 77, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 72, 1, 1, 1, 73, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 488, 15, 1, 15, 15, 15, 15, 15, 74, 1, 15, 15, 15, 15, 489, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 76, 15, 77, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 364, 1, 1, 1, 365, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 490, 478, 366, 478, 478, 478, 478, 478, 367, 1, 478, 478, 15, 478, 491, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 15, 1, 1, 478, 36, 478, 37, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 1, 1, 1, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 40, 42, 43, 43, 43, 44, 1, 368, 1, 1, 1, 369, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 492, 487, 61, 487, 487, 487, 487, 487, 370, 1, 487, 487, 15, 487, 493, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 15, 1, 1, 487, 49, 487, 50, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 66, 66, 68, 69, 69, 69, 70, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 494, 495, 33, 495, 495, 495, 495, 495, 309, 1, 495, 495, 15, 495, 496, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 36, 495, 37, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 318, 1, 1, 1, 319, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 497, 15, 1, 15, 15, 15, 15, 15, 320, 1, 15, 15, 15, 15, 493, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 15, 49, 15, 50, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 494, 495, 33, 495, 495, 495, 495, 495, 309, 1, 495, 495, 15, 495, 498, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 36, 495, 37, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 307, 1, 1, 1, 308, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 494, 495, 33, 495, 495, 495, 495, 495, 309, 1, 495, 495, 15, 495, 491, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 36, 495, 37, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 331, 1, 1, 1, 332, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 499, 500, 334, 500, 500, 500, 500, 500, 335, 1, 500, 500, 485, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 1, 500, 36, 500, 37, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 343, 1, 1, 1, 344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 501, 485, 1, 485, 485, 485, 485, 485, 345, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 485, 49, 485, 50, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 15, 495, 33, 495, 495, 495, 495, 495, 1, 1, 495, 495, 15, 495, 502, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 76, 495, 77, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 15, 495, 33, 495, 495, 495, 495, 495, 1, 1, 495, 495, 15, 495, 503, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 76, 495, 77, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 485, 500, 334, 500, 500, 500, 500, 500, 1, 1, 500, 500, 485, 500, 504, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 1, 500, 76, 500, 77, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 15, 495, 33, 495, 495, 495, 495, 495, 1, 1, 495, 495, 15, 495, 505, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 15, 1, 1, 495, 76, 495, 77, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 314, 313, 313, 315, 316, 316, 316, 317, 1, 506, 1, 506, 506, 506, 506, 506, 1, 1, 506, 506, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 1, 506, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 507, 1, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 507, 507, 507, 507, 507, 507, 507, 507, 1, 1, 507, 507, 1, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 1, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 1, 508, 76, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 510, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 511, 511, 513, 514, 514, 514, 515, 1, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 510, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 511, 511, 513, 514, 514, 514, 515, 1, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 1, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 1, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 1, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 1, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 1, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 1, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 1, 516, 1, 1, 1, 517, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 516, 518, 1, 518, 518, 518, 518, 518, 519, 1, 518, 518, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 520, 518, 1, 518, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 1, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1, 521, 521, 522, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 523, 524, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 525, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, 527, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 529, 528, 528, 530, 531, 531, 531, 532, 1, 533, 533, 533, 533, 533, 533, 533, 533, 533, 1, 533, 533, 534, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 535, 536, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 537, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 539, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 541, 540, 540, 542, 543, 543, 543, 544, 1, 545, 1, 533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 533, 1, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 539, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 541, 540, 540, 542, 543, 543, 543, 544, 1, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, 1, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 1, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 1, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 1, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 1, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 1, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 1, 3, 3, 3, 3, 3, 4, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 546, 548, 1, 548, 548, 548, 548, 548, 549, 1, 548, 548, 550, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1, 551, 548, 1, 548, 552, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1, 1, 1, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1, 8, 1, 1, 1, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 3, 1, 3, 3, 3, 3, 3, 554, 1, 3, 3, 555, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 556, 1, 1, 1, 557, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 556, 518, 1, 518, 518, 518, 518, 518, 558, 1, 518, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 520, 518, 1, 518, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 1, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 546, 560, 1, 560, 560, 560, 560, 560, 549, 1, 560, 560, 550, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1, 551, 560, 1, 560, 1, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1, 1, 1, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 546, 185, 186, 185, 185, 185, 185, 185, 549, 1, 185, 185, 550, 185, 188, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 560, 1, 551, 185, 1, 185, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 561, 247, 1, 247, 247, 247, 247, 247, 549, 1, 247, 247, 247, 247, 562, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 551, 247, 76, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 8, 1, 1, 1, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 563, 247, 1, 247, 247, 247, 247, 247, 554, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 5, 247, 76, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 561, 247, 1, 247, 247, 247, 247, 247, 549, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 551, 247, 76, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 1, 1, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 561, 257, 186, 257, 257, 257, 257, 257, 549, 1, 257, 257, 247, 257, 564, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 247, 1, 551, 257, 76, 257, 247, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 561, 257, 186, 257, 257, 257, 257, 257, 549, 1, 257, 257, 247, 257, 258, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 247, 1, 551, 257, 76, 257, 247, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 191, 191, 193, 194, 194, 194, 195, 1, 565, 1, 1, 1, 566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 565, 333, 334, 333, 333, 333, 333, 333, 567, 1, 333, 333, 550, 333, 568, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 560, 1, 551, 333, 36, 333, 37, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 330, 1, 1, 1, 569, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 330, 3, 1, 3, 3, 3, 3, 3, 570, 1, 3, 3, 555, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, 3, 49, 3, 50, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 571, 1, 1, 1, 572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 571, 518, 1, 518, 518, 518, 518, 518, 573, 1, 518, 518, 559, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 520, 518, 56, 518, 57, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 1, 1, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 1, 565, 1, 1, 1, 566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 565, 333, 334, 333, 333, 333, 333, 333, 567, 1, 333, 333, 550, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 560, 1, 551, 333, 36, 333, 37, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 574, 485, 1, 485, 485, 485, 485, 485, 549, 1, 485, 485, 485, 485, 575, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 551, 485, 76, 485, 77, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 8, 1, 1, 1, 553, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 576, 485, 1, 485, 485, 485, 485, 485, 554, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 5, 485, 76, 485, 77, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 574, 485, 1, 485, 485, 485, 485, 485, 549, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 551, 485, 76, 485, 77, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 565, 1, 1, 1, 566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 577, 500, 334, 500, 500, 500, 500, 500, 567, 1, 500, 500, 485, 500, 578, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 551, 500, 36, 500, 37, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 330, 1, 1, 1, 569, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 579, 485, 1, 485, 485, 485, 485, 485, 570, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 5, 485, 49, 485, 50, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 1, 1, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 485, 1, 565, 1, 1, 1, 566, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 577, 500, 334, 500, 500, 500, 500, 500, 567, 1, 500, 500, 485, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 551, 500, 36, 500, 37, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 574, 500, 334, 500, 500, 500, 500, 500, 549, 1, 500, 500, 485, 500, 580, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 551, 500, 76, 500, 77, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 574, 500, 334, 500, 500, 500, 500, 500, 549, 1, 500, 500, 485, 500, 504, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 485, 1, 551, 500, 76, 500, 77, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, 339, 338, 338, 340, 341, 341, 341, 342, 1, 546, 1, 1, 1, 547, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 546, 506, 1, 506, 506, 506, 506, 506, 549, 1, 506, 506, 550, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 551, 506, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 1, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 1, 0, 2, 319, 305, 6, 3, 5, 320, 7, 8, 272, 273, 246, 270, 275, 294, 239, 240, 241, 242, 243, 244, 245, 7, 8, 10, 270, 271, 9, 11, 12, 10, 162, 14, 218, 322, 24, 239, 240, 241, 242, 243, 244, 245, 11, 12, 14, 15, 322, 24, 13, 11, 12, 14, 15, 322, 24, 16, 17, 19, 149, 161, 46, 142, 143, 144, 145, 146, 147, 148, 18, 20, 21, 23, 15, 322, 24, 22, 20, 21, 23, 15, 322, 24, 25, 26, 124, 125, 47, 111, 127, 138, 113, 104, 105, 106, 107, 108, 109, 110, 25, 26, 28, 47, 111, 112, 113, 104, 105, 106, 107, 108, 109, 110, 27, 29, 30, 32, 103, 322, 33, 31, 29, 30, 32, 33, 322, 34, 35, 37, 45, 38, 39, 40, 41, 42, 43, 44, 36, 34, 35, 37, 45, 38, 39, 40, 41, 42, 43, 44, 48, 101, 93, 94, 95, 96, 97, 98, 99, 100, 49, 51, 50, 52, 53, 55, 57, 86, 87, 88, 89, 90, 91, 92, 56, 54, 52, 53, 55, 56, 58, 323, 60, 61, 59, 64, 63, 78, 79, 80, 81, 82, 83, 84, 85, 62, 60, 61, 63, 65, 76, 68, 69, 70, 71, 72, 73, 74, 75, 66, 67, 77, 102, 25, 26, 28, 47, 111, 112, 113, 104, 105, 106, 107, 108, 109, 110, 114, 116, 117, 118, 119, 120, 121, 122, 123, 115, 124, 125, 138, 126, 134, 131, 128, 129, 324, 130, 132, 133, 135, 136, 327, 137, 138, 128, 140, 139, 141, 150, 151, 20, 153, 154, 155, 156, 157, 158, 159, 160, 150, 151, 20, 153, 154, 155, 156, 157, 158, 159, 160, 152, 16, 17, 19, 149, 161, 142, 143, 144, 145, 146, 147, 148, 163, 216, 208, 209, 210, 211, 212, 213, 214, 215, 164, 166, 165, 167, 168, 170, 171, 201, 202, 203, 204, 205, 206, 207, 167, 168, 170, 56, 169, 167, 168, 170, 56, 172, 329, 174, 330, 176, 177, 175, 180, 179, 194, 195, 196, 197, 198, 199, 200, 176, 177, 179, 178, 176, 177, 179, 181, 192, 184, 185, 186, 187, 188, 189, 190, 191, 182, 183, 193, 217, 219, 220, 223, 222, 219, 220, 222, 221, 219, 220, 222, 224, 236, 237, 228, 229, 230, 231, 232, 233, 234, 235, 224, 225, 227, 228, 229, 230, 231, 232, 233, 234, 235, 226, 236, 237, 238, 247, 263, 264, 266, 255, 256, 257, 258, 259, 260, 261, 262, 247, 248, 250, 255, 256, 257, 258, 259, 260, 261, 262, 249, 251, 252, 254, 218, 322, 24, 251, 252, 254, 15, 322, 24, 253, 251, 252, 254, 15, 322, 24, 263, 264, 266, 265, 266, 267, 269, 15, 322, 24, 268, 266, 267, 269, 15, 322, 24, 7, 8, 10, 246, 270, 271, 239, 240, 241, 242, 243, 244, 245, 271, 272, 291, 274, 273, 283, 274, 279, 276, 277, 333, 278, 280, 281, 282, 279, 284, 285, 284, 276, 286, 287, 336, 286, 288, 290, 289, 290, 292, 339, 293, 291, 341, 296, 297, 298, 299, 300, 301, 302, 303, 304, 1, 2, 319, 305, 6, 307, 308, 307, 342, 310, 311, 312, 313, 314, 315, 316, 317, 307, 308, 307, 342, 310, 311, 312, 313, 314, 315, 316, 317, 309, 320, 4, 319, 321, 318, 6, 295, 4, 321, 318, 320, 4, 321, 318, 319, 325, 326, 325, 328, 330, 173, 331, 332, 173, 331, 330, 173, 331, 334, 335, 334, 337, 338, 337, 340, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 0, 0, 0, 1, 2, 1, 0, 0, 0, 3, 3, 3, 3, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 2, 3, 0, 5, 5, 0, 0, 6, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 8, 8, 0, 9, 9, 10, 11, 11, 11, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 9, 9, 10, 9, 9, 9, 12, 12, 12, 12, 12, 13, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14, 14, 14, 0, 9, 9, 10, 15, 15, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0, 0, 0, 0, 0, 14, 0, 9, 9, 10, 15, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 0, 0, 0, 16, 16, 17, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 0, 9, 9, 10, 11, 7, 0, 0, 0, 5, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 9, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 6, 0, 0, 2, 0, 9, 9, 10, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 17, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 6, 19, 19, 19, 0, 0, 2, 20, 20, 20, 0, 9, 9, 10, 21, 21, 21, 0, 0, 18, 0, 0, 0, 2, 22, 22, 22, 0, 9, 9, 10, 23, 23, 23, 9, 9, 24, 24, 10, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 3, 5, 0, 7, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 0, 8, 5, 0, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 25, 10, 25, 26, 26, 27, 28, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 2, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 0, 31, 30, 32, 0, 0, 2, 0, 9, 9, 10, 9, 32, 30, 0, 0, 0, 33, 33, 34, 0, 0, 2, 9, 9, 10, 30, 0, 0, 33, 0, 0, 0, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 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, 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, 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, 30, 0, 9, 30, 30, 30, 0, 30, 30, 30, 30, 0, 9, 30, 30, 0, 30, 30, 0, 30, 30, 30, 30, 0, ] class << self attr_accessor :start end self.start = 318 class << self attr_accessor :first_final end self.first_final = 318 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 306 class << self attr_accessor :en_main end self.en_main = 318 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::MessageIdsElement) if data.nil? # Parser state message_ids = MessageIdsStruct.new([]) msg_id_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin msg_id_s = p end when 30 begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end when 9 begin end when 26 begin end when 14 begin end when 12 begin end when 8 begin end when 5 begin end when 3 begin end when 18 begin end when 16 begin end when 22 begin end when 2 begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 29 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 32 begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end begin msg_id_s = p end when 31 begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 25 begin end begin msg_id_s = p end when 15 begin end begin end when 11 begin end begin end when 24 begin end begin end when 23 begin end begin end when 10 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 27 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 28 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 13 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 20 begin end begin end when 33 begin end begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end when 7 begin end begin end when 6 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 4 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end when 17 begin end begin end when 21 begin end begin end begin end when 19 begin end begin end begin end when 34 begin end begin begin stack[top] = cs top += 1 cs = 306 _goto_level = _again next end end begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 30 begin id = chars(data, msg_id_s, p - 1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id end when 9 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 318 raise Mail::Field::IncompleteParseError.new(Mail::MessageIdsElement, data, p) end message_ids end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/message_ids_parser.rl000066400000000000000000000040641436372131700220240ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ # RFC 5322 Section 3.6.4: Identification Fields # https://tools.ietf.org/html/rfc5322#section-3.6.4 machine message_ids; alphtype int; # Message Ids action msg_id_s { msg_id_s = p } action msg_id_e { id = chars(data, msg_id_s, p-1) id = $1 if id =~ /.*<(.*)>.*/ message_ids.message_ids << id } # No-op actions action angle_addr_s {} action address_s {} action address_e {} action comment_e {} action comment_s {} action domain_e {} action domain_s {} action local_dot_atom_e {} action local_dot_atom_pre_comment_e {} action local_dot_atom_pre_comment_s {} action local_dot_atom_s {} action phrase_s {} action phrase_e {} action qstr_e {} action qstr_s {} action ctime_date_s {} action ctime_date_e {} action date_s {} action date_e {} action time_s {} action time_e {} action local_quoted_string_s {} action local_quoted_string_e {} action obs_domain_list_s {} action obs_domain_list_e {} action group_name_s {} action group_name_e {} action received_tokens_s {} action received_tokens_e {} include rfc5322 "rfc5322.rl"; main := message_ids; }%% module Mail::Parsers module MessageIdsParser extend Mail::ParserTools MessageIdsStruct = Struct.new(:message_ids, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::MessageIdsElement) if data.nil? # Parser state message_ids = MessageIdsStruct.new([]) msg_id_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::MessageIdsElement, data, p) end message_ids end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/mime_version_parser.rb000066400000000000000000000362721436372131700222310ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module MimeVersionParser extend Mail::ParserTools MimeVersionStruct = Struct.new(:major, :minor, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 57, 10, 10, 9, 32, 9, 57, 40, 57, 46, 46, 40, 57, 48, 57, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 57, 9, 40, 9, 40, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 49, 1, 24, 49, 18, 1, 18, 10, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 49, 32, 32, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 50, 52, 77, 127, 146, 148, 167, 178, 180, 205, 450, 695, 697, 722, 968, 1033, 1066, 1131, 1164, 1213, 1278, 1295, 1345, 1378, 1411, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 5, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 6, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 10, 1, 1, 1, 1, 1, 11, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 13, 1, 14, 1, 1, 1, 1, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 17, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 19, 19, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 22, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 23, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 26, 26, 28, 29, 29, 29, 30, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 34, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 43, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 38, 38, 40, 41, 41, 41, 42, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 1, 44, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 18, 1, 1, 1, 48, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 1, 1, 1, 1, 1, 1, 1, 49, 1, 50, 1, 1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 50, 1, 1, 1, 1, 1, 1, 1, 52, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 1, 0, 2, 4, 5, 3, 1, 2, 4, 5, 6, 7, 5, 7, 8, 23, 23, 10, 24, 12, 13, 12, 26, 15, 16, 17, 18, 19, 20, 21, 22, 12, 13, 12, 26, 15, 16, 17, 18, 19, 20, 21, 22, 14, 24, 9, 25, 23, 9, 25, 24, 9, 25, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 0, 0, 0, 1, 2, 0, 3, 3, 4, 5, 6, 7, 0, 3, 1, 8, 9, 0, 0, 10, 10, 11, 12, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 1, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 15, 0, 0, 1, 3, 3, 4, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 3, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 23 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 11 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) return MimeVersionStruct.new("", nil) if Mail::Utilities.blank?(data) # Parser state mime_version = MimeVersionStruct.new major_digits_s = minor_digits_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 2 begin major_digits_s = p end when 7 begin mime_version.major = chars(data, major_digits_s, p - 1) end when 8 begin minor_digits_s = p end when 14 begin mime_version.minor = chars(data, minor_digits_s, p - 1) end when 10 begin end when 3 begin end when 1 begin begin stack[top] = cs top += 1 cs = 11 _goto_level = _again next end end when 13 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 6 begin mime_version.major = chars(data, major_digits_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 11 _goto_level = _again next end end when 15 begin mime_version.minor = chars(data, minor_digits_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 11 _goto_level = _again next end end when 11 begin end begin begin stack[top] = cs top += 1 cs = 11 _goto_level = _again next end end when 12 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 5 begin end begin major_digits_s = p end when 9 begin end begin minor_digits_s = p end when 4 begin end begin begin stack[top] = cs top += 1 cs = 11 _goto_level = _again next end end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 14 begin mime_version.minor = chars(data, minor_digits_s, p - 1) end when 3 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 23 raise Mail::Field::IncompleteParseError.new(Mail::MimeVersionElement, data, p) end mime_version end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/mime_version_parser.rl000066400000000000000000000027711436372131700222400ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine mime_version; alphtype int; # Major Digits action major_digits_s { major_digits_s = p } action major_digits_e { mime_version.major = chars(data, major_digits_s, p-1) } # Minor Digits action minor_digits_s { minor_digits_s = p } action minor_digits_e { mime_version.minor = chars(data, minor_digits_s, p-1) } # No-op actions action comment_s {} action comment_e {} action qstr_s {} action qstr_e {} action phrase_s {} action phrase_e {} include rfc2045_mime "rfc2045_mime.rl"; main := mime_version; }%% module Mail::Parsers module MimeVersionParser extend Mail::ParserTools MimeVersionStruct = Struct.new(:major, :minor, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) return MimeVersionStruct.new('', nil) if Mail::Utilities.blank?(data) # Parser state mime_version = MimeVersionStruct.new major_digits_s = minor_digits_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::MimeVersionElement, data, p) end mime_version end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/phrase_lists_parser.rb000066400000000000000000000713111436372131700222260ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers class PhraseListsParser extend Mail::ParserTools PhraseListsStruct = Struct.new(:phrases, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 244, 9, 244, 10, 10, 9, 32, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 9, 244, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 236, 236, 1, 24, 1, 24, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 236, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 237, 474, 476, 501, 503, 528, 773, 1018, 1020, 1045, 1291, 1356, 1389, 1454, 1487, 1536, 1601, 1618, 1855, 1857, 1882, 2119, 2184, 2217, 2282, 2315, 2364, 2429, 2446, 2691, 2936, 2938, 2963, 3209, 3274, 3307, 3372, 3405, 3454, 3519, 3536, 3773, 4010, 4247, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 11, 12, 12, 12, 13, 1, 14, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 16, 17, 16, 16, 16, 16, 16, 18, 1, 16, 16, 1, 16, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 1, 16, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 21, 21, 23, 24, 24, 24, 25, 1, 26, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 1, 27, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 31, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 34, 34, 36, 37, 37, 37, 38, 1, 39, 39, 39, 39, 39, 39, 39, 39, 39, 1, 39, 39, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 41, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 45, 45, 47, 48, 48, 48, 49, 1, 50, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 39, 1, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 45, 45, 47, 48, 48, 48, 49, 1, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1, 51, 1, 1, 1, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 11, 12, 12, 12, 13, 1, 53, 1, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 1, 55, 1, 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 57, 58, 57, 57, 57, 57, 57, 59, 1, 57, 57, 1, 57, 1, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 57, 1, 57, 1, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 64, 65, 65, 65, 66, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 67, 67, 68, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 69, 70, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 71, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 74, 74, 76, 77, 77, 77, 78, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 79, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 81, 82, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 83, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 86, 86, 88, 89, 89, 89, 90, 1, 91, 1, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 79, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 86, 86, 88, 89, 89, 89, 90, 1, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 1, 16, 1, 1, 1, 92, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 17, 16, 16, 16, 16, 16, 93, 1, 16, 16, 94, 16, 95, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 1, 16, 95, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 21, 21, 23, 24, 24, 24, 25, 1, 57, 1, 1, 1, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 57, 57, 58, 57, 57, 57, 57, 57, 97, 1, 57, 57, 98, 57, 99, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 57, 1, 57, 99, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 62, 64, 65, 65, 65, 66, 1, 14, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 16, 17, 16, 16, 16, 16, 16, 18, 1, 16, 16, 94, 16, 95, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 1, 16, 95, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 21, 21, 23, 24, 24, 24, 25, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 2, 0, 3, 42, 7, 22, 44, 23, 24, 25, 26, 27, 28, 29, 2, 3, 42, 7, 22, 23, 24, 25, 26, 27, 28, 29, 4, 6, 8, 9, 42, 11, 12, 13, 14, 15, 16, 17, 18, 8, 9, 42, 11, 12, 13, 14, 15, 16, 17, 18, 10, 19, 20, 21, 19, 2, 3, 42, 7, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 31, 45, 34, 35, 36, 37, 38, 39, 40, 41, 31, 32, 31, 45, 34, 35, 36, 37, 38, 39, 40, 41, 33, 5, 43, 19, 44, 5, 43, 19, 44, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 9, 9, 10, 11, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 13, 0, 7, 8, 14, 7, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 13, 14, 13, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 42 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 30 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::PhraseList) if data.nil? # Parser state phrase_lists = PhraseListsStruct.new([]) phrase_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 1 begin phrase_s = p end when 13 begin phrase_lists.phrases << chars(data, phrase_s, p - 1) if phrase_s phrase_s = nil end when 7 begin end when 9 begin end when 6 begin end when 4 begin end when 3 begin begin stack[top] = cs top += 1 cs = 30 _goto_level = _again next end end when 12 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 2 begin phrase_s = p end begin begin stack[top] = cs top += 1 cs = 30 _goto_level = _again next end end when 14 begin end begin phrase_lists.phrases << chars(data, phrase_s, p - 1) if phrase_s phrase_s = nil end when 8 begin end begin begin stack[top] = cs top += 1 cs = 30 _goto_level = _again next end end when 10 begin end begin begin stack[top] = cs top += 1 cs = 30 _goto_level = _again next end end when 11 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 5 begin end begin end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 13 begin phrase_lists.phrases << chars(data, phrase_s, p - 1) if phrase_s phrase_s = nil end when 14 begin end begin phrase_lists.phrases << chars(data, phrase_s, p - 1) if phrase_s phrase_s = nil end end end end if _goto_level <= _out break end end end if p != eof || cs < 42 raise Mail::Field::IncompleteParseError.new(Mail::PhraseList, data, p) end phrase_lists end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/phrase_lists_parser.rl000066400000000000000000000036461436372131700222460ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine date_time; alphtype int; # Phrase action phrase_s { phrase_s = p } action phrase_e { phrase_lists.phrases << chars(data, phrase_s, p-1) if phrase_s phrase_s = nil } # No-op actions action address_s {} action address_e {} action angle_addr_s {} action ctime_date_s {} action ctime_date_e {} action comment_e {} action comment_s {} action domain_e {} action domain_s {} action local_dot_atom_e {} action local_dot_atom_pre_comment_e {} action local_dot_atom_pre_comment_s {} action local_dot_atom_s {} action qstr_e {} action qstr_s {} action date_s {} action date_e {} action time_s {} action time_e {} action local_quoted_string_s {} action local_quoted_string_e {} action obs_domain_list_s {} action obs_domain_list_e {} action group_name_s {} action group_name_e {} action msg_id_s {} action msg_id_e {} action received_tokens_s {} action received_tokens_e {} include rfc5322 "rfc5322.rl"; main := phrase_lists; }%% module Mail::Parsers class PhraseListsParser extend Mail::ParserTools PhraseListsStruct = Struct.new(:phrases, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::PhraseList) if data.nil? # Parser state phrase_lists = PhraseListsStruct.new([]) phrase_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::PhraseList, data, p) end phrase_lists end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/received_parser.rb000066400000000000000000012721541436372131700213250ustar00rootroot00000000000000 # frozen_string_literal: true require "mail/utilities" require "mail/parser_tools" begin original_verbose, $VERBOSE = $VERBOSE, nil module Mail::Parsers module ReceivedParser extend Mail::ParserTools ReceivedStruct = Struct.new(:date, :time, :info, :error) class << self attr_accessor :_trans_keys private :_trans_keys, :_trans_keys= end self._trans_keys = [ 0, 0, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 10, 10, 9, 32, 9, 244, 9, 87, 9, 87, 10, 10, 9, 32, 9, 87, 9, 83, 9, 83, 10, 10, 9, 32, 9, 83, 112, 117, 114, 114, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 57, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 10, 10, 9, 32, 9, 58, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 58, 9, 122, 10, 10, 9, 32, 9, 58, 9, 57, 10, 10, 9, 32, 9, 57, 48, 57, 9, 40, 9, 122, 10, 10, 9, 32, 9, 40, 48, 57, 48, 57, 48, 57, 48, 57, 10, 10, 9, 32, 84, 84, 103, 103, 101, 101, 99, 99, 101, 101, 98, 98, 97, 117, 110, 110, 108, 110, 97, 97, 114, 121, 111, 111, 118, 118, 99, 99, 116, 116, 101, 101, 112, 112, 114, 114, 105, 105, 9, 44, 10, 10, 9, 32, 9, 44, 9, 57, 9, 57, 10, 10, 9, 32, 9, 57, 111, 111, 110, 110, 97, 117, 116, 116, 104, 117, 117, 117, 101, 101, 101, 101, 100, 100, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 62, 10, 10, 9, 32, 9, 62, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 9, 64, 10, 10, 9, 32, 9, 64, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 58, 10, 10, 9, 32, 9, 58, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 33, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 33, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 9, 244, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 10, 10, 9, 32, 9, 244, 33, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 1, 244, 10, 10, 9, 32, 9, 244, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 10, 10, 9, 32, 9, 244, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 244, 1, 244, 1, 244, 10, 10, 9, 32, 0, 244, 128, 191, 160, 191, 128, 191, 128, 159, 144, 191, 128, 191, 128, 143, 9, 40, 9, 40, 9, 40, 9, 83, 9, 77, 9, 84, 0, 0, 0, ] class << self attr_accessor :_key_spans private :_key_spans, :_key_spans= end self._key_spans = [ 0, 236, 236, 1, 24, 236, 236, 1, 24, 244, 244, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 1, 24, 236, 79, 79, 1, 24, 79, 75, 75, 1, 24, 75, 6, 1, 49, 1, 24, 49, 10, 49, 49, 1, 24, 49, 10, 50, 1, 24, 50, 49, 1, 24, 49, 10, 50, 114, 1, 24, 50, 49, 1, 24, 49, 10, 32, 114, 1, 24, 32, 10, 10, 10, 10, 1, 24, 1, 1, 1, 1, 1, 1, 21, 1, 3, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 36, 1, 24, 36, 49, 49, 1, 24, 49, 1, 1, 21, 1, 14, 1, 1, 1, 1, 236, 236, 1, 24, 236, 56, 1, 24, 56, 236, 1, 24, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 54, 1, 24, 54, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 54, 1, 24, 54, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 56, 1, 24, 56, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 236, 1, 24, 236, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 56, 1, 24, 56, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 56, 1, 24, 56, 236, 56, 1, 24, 56, 236, 236, 1, 24, 236, 50, 1, 24, 50, 56, 1, 24, 56, 236, 236, 1, 24, 236, 212, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 50, 1, 24, 50, 212, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 236, 1, 24, 236, 236, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 212, 236, 236, 1, 24, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 236, 236, 212, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 236, 1, 24, 236, 236, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 236, 245, 64, 32, 64, 32, 48, 64, 16, 1, 24, 236, 212, 64, 32, 64, 32, 48, 64, 16, 64, 32, 64, 32, 48, 64, 16, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 236, 236, 1, 24, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 64, 32, 64, 32, 48, 64, 16, 245, 64, 32, 64, 32, 48, 64, 16, 244, 1, 24, 236, 236, 236, 1, 24, 236, 236, 1, 24, 236, 236, 64, 32, 64, 32, 48, 64, 16, 236, 64, 32, 64, 32, 48, 64, 16, 236, 244, 244, 1, 24, 245, 64, 32, 64, 32, 48, 64, 16, 32, 32, 32, 75, 69, 76, 0, ] class << self attr_accessor :_index_offsets private :_index_offsets, :_index_offsets= end self._index_offsets = [ 0, 0, 237, 474, 476, 501, 738, 975, 977, 1002, 1247, 1492, 1494, 1519, 1756, 1993, 1995, 2020, 2257, 2494, 2731, 2733, 2758, 2995, 2997, 3022, 3259, 3339, 3419, 3421, 3446, 3526, 3602, 3678, 3680, 3705, 3781, 3788, 3790, 3840, 3842, 3867, 3917, 3928, 3978, 4028, 4030, 4055, 4105, 4116, 4167, 4169, 4194, 4245, 4295, 4297, 4322, 4372, 4383, 4434, 4549, 4551, 4576, 4627, 4677, 4679, 4704, 4754, 4765, 4798, 4913, 4915, 4940, 4973, 4984, 4995, 5006, 5017, 5019, 5044, 5046, 5048, 5050, 5052, 5054, 5056, 5078, 5080, 5084, 5086, 5095, 5097, 5099, 5101, 5103, 5105, 5107, 5109, 5111, 5148, 5150, 5175, 5212, 5262, 5312, 5314, 5339, 5389, 5391, 5393, 5415, 5417, 5432, 5434, 5436, 5438, 5440, 5677, 5914, 5916, 5941, 6178, 6235, 6237, 6262, 6319, 6556, 6558, 6583, 6820, 6877, 6879, 6904, 6961, 7198, 7435, 7437, 7462, 7699, 7754, 7756, 7781, 7836, 8073, 8075, 8100, 8337, 8402, 8435, 8500, 8533, 8582, 8647, 8664, 8901, 9146, 9391, 9393, 9418, 9655, 9710, 9712, 9737, 9792, 10005, 10070, 10103, 10168, 10201, 10250, 10315, 10332, 10578, 10643, 10676, 10741, 10774, 10823, 10888, 10905, 10907, 10932, 11169, 11234, 11267, 11332, 11365, 11414, 11479, 11496, 11733, 11978, 11980, 12005, 12251, 12316, 12349, 12414, 12447, 12496, 12561, 12578, 12643, 12676, 12741, 12774, 12823, 12888, 12905, 13150, 13395, 13397, 13422, 13668, 13733, 13766, 13831, 13864, 13913, 13978, 13995, 14232, 14477, 14722, 14724, 14749, 14986, 15043, 15045, 15070, 15127, 15192, 15225, 15290, 15323, 15372, 15437, 15454, 15700, 15765, 15798, 15863, 15896, 15945, 16010, 16027, 16029, 16054, 16291, 16528, 16530, 16555, 16792, 17037, 17282, 17284, 17309, 17546, 17792, 17857, 17890, 17955, 17988, 18037, 18102, 18119, 18364, 18366, 18391, 18456, 18489, 18554, 18587, 18636, 18701, 18718, 18963, 19208, 19210, 19235, 19472, 19529, 19531, 19556, 19613, 19859, 19924, 19957, 20022, 20055, 20104, 20169, 20186, 20431, 20433, 20458, 20515, 20517, 20542, 20599, 20836, 20893, 20895, 20920, 20977, 21214, 21451, 21453, 21478, 21715, 21766, 21768, 21793, 21844, 21901, 21903, 21928, 21985, 22222, 22459, 22461, 22486, 22723, 22936, 23173, 23175, 23200, 23437, 23502, 23535, 23600, 23633, 23682, 23747, 23764, 24001, 24246, 24491, 24493, 24518, 24755, 24806, 24808, 24833, 24884, 25097, 25162, 25195, 25260, 25293, 25342, 25407, 25424, 25670, 25735, 25768, 25833, 25866, 25915, 25980, 25997, 25999, 26024, 26261, 26326, 26359, 26424, 26457, 26506, 26571, 26588, 26825, 27070, 27072, 27097, 27343, 27408, 27441, 27506, 27539, 27588, 27653, 27670, 27907, 28144, 28146, 28171, 28408, 28645, 28647, 28672, 28909, 29146, 29383, 29385, 29410, 29647, 29884, 30129, 30131, 30156, 30402, 30467, 30500, 30565, 30598, 30647, 30712, 30729, 30966, 31203, 31205, 31230, 31467, 31680, 31917, 32154, 32156, 32181, 32418, 32483, 32516, 32581, 32614, 32663, 32728, 32745, 32982, 33219, 33221, 33246, 33483, 33728, 33973, 33975, 34000, 34246, 34311, 34344, 34409, 34442, 34491, 34556, 34573, 34575, 34600, 34665, 34698, 34763, 34796, 34845, 34910, 34927, 34992, 35025, 35090, 35123, 35172, 35237, 35254, 35491, 35556, 35589, 35654, 35687, 35736, 35801, 35818, 36055, 36300, 36545, 36547, 36572, 36809, 37046, 37259, 37504, 37749, 37751, 37776, 38022, 38087, 38120, 38185, 38218, 38267, 38332, 38349, 38351, 38376, 38441, 38474, 38539, 38572, 38621, 38686, 38703, 38949, 39014, 39047, 39112, 39145, 39194, 39259, 39276, 39521, 39523, 39548, 39785, 40022, 40024, 40049, 40286, 40523, 40588, 40621, 40686, 40719, 40768, 40833, 40850, 41095, 41340, 41342, 41367, 41604, 41850, 41915, 41948, 42013, 42046, 42095, 42160, 42177, 42179, 42204, 42441, 42654, 42719, 42752, 42817, 42850, 42899, 42964, 42981, 43046, 43079, 43144, 43177, 43226, 43291, 43308, 43553, 43798, 43800, 43825, 44071, 44136, 44169, 44234, 44267, 44316, 44381, 44398, 44635, 44700, 44733, 44798, 44831, 44880, 44945, 44962, 45199, 45436, 45438, 45463, 45700, 45945, 46190, 46192, 46217, 46463, 46528, 46561, 46626, 46659, 46708, 46773, 46790, 47035, 47037, 47062, 47127, 47160, 47225, 47258, 47307, 47372, 47389, 47635, 47700, 47733, 47798, 47831, 47880, 47945, 47962, 48207, 48209, 48234, 48471, 48708, 48945, 48947, 48972, 49209, 49446, 49448, 49473, 49710, 49947, 50012, 50045, 50110, 50143, 50192, 50257, 50274, 50511, 50576, 50609, 50674, 50707, 50756, 50821, 50838, 51075, 51320, 51565, 51567, 51592, 51838, 51903, 51936, 52001, 52034, 52083, 52148, 52165, 52198, 52231, 52264, 52340, 52410, 52487, ] class << self attr_accessor :_indicies private :_indicies, :_indicies= end self._indicies = [ 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3, 4, 3, 3, 3, 3, 3, 5, 1, 3, 3, 1, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 7, 8, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 12, 12, 14, 15, 15, 15, 16, 1, 17, 1, 1, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 19, 20, 19, 19, 19, 19, 19, 21, 1, 19, 19, 1, 19, 22, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 23, 24, 19, 1, 19, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 25, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 28, 28, 30, 31, 31, 31, 32, 1, 33, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 35, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 37, 38, 37, 37, 37, 37, 37, 39, 1, 37, 37, 1, 37, 40, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 41, 42, 37, 1, 37, 43, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 44, 1, 1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 52, 1, 1, 1, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 52, 54, 55, 54, 54, 54, 54, 54, 56, 1, 54, 54, 1, 54, 57, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 58, 59, 54, 1, 54, 60, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 61, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 66, 67, 67, 67, 68, 1, 69, 1, 70, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 1, 71, 71, 71, 71, 71, 71, 71, 71, 72, 1, 71, 71, 73, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 71, 74, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, 78, 78, 80, 81, 81, 81, 82, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 83, 83, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 85, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 86, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 89, 89, 91, 92, 92, 92, 93, 1, 94, 1, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 83, 1, 95, 1, 1, 1, 96, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 95, 97, 98, 97, 97, 97, 97, 97, 99, 1, 97, 97, 1, 97, 100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 101, 102, 97, 1, 97, 103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 104, 1, 1, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 107, 107, 109, 110, 110, 110, 111, 1, 112, 1, 1, 1, 113, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 112, 114, 115, 114, 114, 114, 114, 114, 116, 1, 114, 114, 1, 114, 117, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 1, 118, 119, 114, 1, 114, 120, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 121, 1, 1, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, 124, 124, 126, 127, 127, 127, 128, 1, 129, 1, 130, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 130, 1, 131, 1, 1, 1, 132, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 131, 133, 134, 133, 133, 133, 133, 133, 135, 1, 133, 133, 1, 133, 136, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 1, 137, 138, 133, 1, 133, 139, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 140, 1, 1, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 142, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 143, 143, 145, 146, 146, 146, 147, 1, 148, 1, 1, 1, 149, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 148, 150, 151, 150, 150, 150, 150, 150, 152, 1, 150, 150, 1, 150, 153, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 1, 1, 1, 150, 1, 150, 1, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 1, 1, 1, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 156, 156, 158, 159, 159, 159, 160, 1, 148, 1, 1, 1, 149, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 148, 161, 162, 161, 161, 161, 161, 161, 152, 1, 161, 161, 1, 161, 1, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 1, 1, 1, 161, 1, 161, 1, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 1, 1, 1, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, 165, 165, 167, 168, 168, 168, 169, 1, 170, 1, 148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 148, 1, 171, 1, 1, 1, 172, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 171, 19, 20, 19, 19, 19, 19, 19, 173, 1, 19, 19, 1, 19, 174, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 23, 24, 19, 1, 19, 175, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 25, 1, 1, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 28, 28, 30, 31, 31, 31, 32, 1, 176, 1, 161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 161, 1, 177, 1, 1, 1, 178, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 177, 179, 180, 179, 179, 179, 179, 179, 181, 1, 179, 179, 1, 179, 182, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 183, 184, 179, 1, 179, 185, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 186, 1, 1, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 189, 189, 191, 192, 192, 192, 193, 1, 194, 1, 1, 1, 195, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 194, 1, 1, 1, 1, 1, 1, 1, 196, 1, 1, 1, 1, 1, 1, 1, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 198, 1, 1, 1, 1, 1, 1, 199, 1, 1, 1, 1, 1, 200, 201, 1, 1, 202, 1, 203, 1, 1, 1, 204, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 203, 1, 1, 1, 1, 1, 1, 1, 205, 1, 1, 1, 1, 1, 1, 1, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 198, 1, 1, 1, 1, 1, 1, 199, 1, 1, 1, 1, 1, 200, 201, 1, 1, 202, 1, 207, 1, 203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 203, 1, 208, 1, 1, 1, 209, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 208, 1, 1, 1, 1, 1, 1, 1, 210, 1, 1, 1, 1, 1, 1, 1, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 212, 1, 1, 1, 1, 1, 1, 213, 1, 1, 1, 1, 1, 214, 215, 1, 1, 216, 1, 217, 1, 1, 1, 218, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 217, 1, 1, 1, 1, 1, 1, 1, 219, 1, 1, 1, 1, 1, 1, 1, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 1, 1, 1, 1, 1, 1, 1, 220, 1, 1, 221, 1, 222, 1, 1, 1, 223, 1, 1, 224, 225, 226, 1, 1, 1, 227, 1, 217, 1, 1, 1, 218, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 217, 1, 1, 1, 1, 1, 1, 1, 219, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 220, 1, 1, 221, 1, 222, 1, 1, 1, 223, 1, 1, 224, 225, 226, 1, 1, 1, 227, 1, 228, 1, 217, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 217, 1, 229, 1, 1, 1, 230, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 229, 1, 1, 1, 1, 1, 1, 1, 231, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 232, 1, 1, 233, 1, 234, 1, 1, 1, 235, 1, 1, 236, 237, 238, 1, 1, 1, 239, 1, 240, 1, 1, 1, 1, 241, 1, 242, 1, 242, 1, 1, 1, 243, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 242, 1, 1, 1, 1, 1, 1, 1, 244, 1, 1, 1, 1, 1, 1, 1, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 1, 246, 1, 242, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 242, 1, 247, 1, 1, 1, 248, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 247, 1, 1, 1, 1, 1, 1, 1, 249, 1, 1, 1, 1, 1, 1, 1, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 252, 1, 1, 1, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 252, 1, 1, 1, 1, 1, 1, 1, 254, 1, 1, 1, 1, 1, 1, 1, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 1, 252, 1, 1, 1, 253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 252, 1, 1, 1, 1, 1, 1, 1, 254, 1, 1, 1, 1, 1, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 256, 1, 252, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 252, 1, 257, 1, 1, 1, 258, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 257, 1, 1, 1, 1, 1, 1, 1, 259, 1, 1, 1, 1, 1, 1, 1, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 1, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 1, 261, 1, 1, 1, 262, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 261, 1, 1, 1, 1, 1, 1, 1, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 264, 1, 265, 1, 261, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 261, 1, 266, 1, 1, 1, 267, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 266, 1, 1, 1, 1, 1, 1, 1, 268, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 269, 1, 264, 1, 1, 1, 270, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 264, 1, 1, 1, 1, 1, 1, 1, 271, 1, 1, 1, 1, 1, 1, 1, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 1, 273, 1, 264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 264, 1, 269, 1, 1, 1, 274, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 269, 1, 1, 1, 1, 1, 1, 1, 275, 1, 1, 1, 1, 1, 1, 1, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 1, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 1, 278, 1, 1, 1, 279, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 1, 1, 1, 1, 1, 1, 1, 280, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 281, 1, 278, 1, 1, 1, 279, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 1, 1, 1, 1, 1, 1, 1, 280, 1, 1, 282, 1, 282, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 281, 1, 1, 1, 1, 1, 1, 283, 283, 284, 283, 284, 283, 285, 283, 283, 1, 283, 283, 284, 283, 283, 284, 283, 283, 283, 283, 286, 283, 283, 283, 283, 283, 1, 1, 1, 1, 1, 1, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1, 287, 1, 278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 278, 1, 288, 1, 1, 1, 289, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 288, 1, 1, 1, 1, 1, 1, 1, 290, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 291, 1, 281, 1, 1, 1, 292, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 281, 1, 1, 1, 1, 1, 1, 1, 293, 1, 1, 1, 1, 1, 1, 1, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 1, 295, 1, 281, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 281, 1, 291, 1, 1, 1, 296, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 291, 1, 1, 1, 1, 1, 1, 1, 297, 1, 1, 1, 1, 1, 1, 1, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 1, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 1, 300, 1, 1, 1, 301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 300, 1, 1, 1, 1, 1, 1, 1, 302, 1, 300, 1, 1, 1, 301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 300, 1, 1, 1, 1, 1, 1, 1, 302, 1, 1, 282, 1, 282, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 283, 283, 284, 283, 284, 283, 285, 283, 283, 1, 283, 283, 284, 283, 283, 284, 283, 283, 283, 283, 286, 283, 283, 283, 283, 283, 1, 1, 1, 1, 1, 1, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1, 303, 1, 300, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 300, 1, 304, 1, 1, 1, 305, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 304, 1, 1, 1, 1, 1, 1, 1, 306, 1, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 1, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 1, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 1, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 1, 310, 1, 311, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 1, 283, 1, 242, 1, 312, 1, 242, 1, 313, 1, 242, 1, 314, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 315, 1, 242, 1, 242, 1, 242, 1, 316, 1, 242, 1, 1, 1, 1, 1, 1, 242, 1, 317, 1, 242, 1, 318, 1, 242, 1, 319, 1, 242, 1, 320, 1, 321, 1, 321, 1, 1, 1, 322, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 321, 1, 1, 1, 1, 1, 1, 1, 323, 1, 1, 1, 324, 1, 325, 1, 321, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 321, 1, 326, 1, 1, 1, 327, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 326, 1, 1, 1, 1, 1, 1, 1, 328, 1, 1, 1, 329, 1, 330, 1, 1, 1, 331, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 330, 1, 1, 1, 1, 1, 1, 1, 332, 1, 1, 1, 1, 1, 1, 1, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 1, 333, 1, 1, 1, 334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 333, 1, 1, 1, 1, 1, 1, 1, 335, 1, 1, 1, 1, 1, 1, 1, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 1, 336, 1, 333, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 333, 1, 337, 1, 1, 1, 338, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 337, 1, 1, 1, 1, 1, 1, 1, 339, 1, 1, 1, 1, 1, 1, 1, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 1, 340, 1, 321, 1, 341, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 340, 1, 321, 1, 342, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343, 1, 321, 1, 321, 1, 344, 1, 321, 1, 345, 1, 1, 1, 346, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 345, 347, 348, 347, 347, 347, 347, 347, 349, 1, 347, 347, 350, 347, 351, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 1, 347, 352, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 360, 1, 1, 1, 361, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 360, 347, 348, 347, 347, 347, 347, 347, 362, 1, 347, 347, 363, 347, 351, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 1, 347, 364, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 365, 1, 360, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 360, 1, 366, 1, 1, 1, 367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 366, 368, 369, 368, 368, 368, 368, 368, 370, 1, 368, 368, 1, 368, 371, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 368, 372, 368, 373, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, 376, 376, 378, 379, 379, 379, 380, 1, 381, 1, 1, 1, 382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 381, 1, 1, 1, 1, 1, 1, 1, 383, 1, 1, 1, 1, 1, 384, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 385, 1, 386, 1, 381, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 381, 1, 387, 1, 1, 1, 388, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 387, 1, 1, 1, 1, 1, 1, 1, 389, 1, 1, 1, 1, 1, 390, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 391, 1, 392, 1, 384, 1, 1, 1, 393, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 384, 394, 395, 394, 394, 394, 394, 394, 396, 1, 394, 394, 1, 394, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 1, 394, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 398, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 399, 399, 401, 402, 402, 402, 403, 1, 404, 1, 384, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 384, 1, 405, 1, 1, 1, 406, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 405, 394, 1, 394, 394, 394, 394, 394, 407, 1, 394, 394, 1, 394, 384, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 34, 394, 408, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 398, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 399, 399, 401, 402, 402, 402, 403, 1, 405, 1, 1, 1, 406, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 405, 1, 1, 1, 1, 1, 1, 1, 407, 1, 1, 1, 1, 1, 384, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 408, 1, 409, 1, 405, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 405, 1, 410, 1, 1, 1, 411, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 410, 1, 1, 1, 1, 1, 1, 1, 412, 1, 1, 1, 1, 1, 390, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 391, 1, 413, 1, 414, 1, 1, 1, 415, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 414, 416, 417, 416, 416, 416, 416, 416, 418, 1, 416, 416, 1, 416, 419, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 1, 1, 416, 1, 416, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 420, 1, 1, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, 422, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 424, 423, 423, 425, 426, 426, 426, 427, 1, 428, 1, 1, 1, 429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 428, 430, 431, 430, 430, 430, 430, 430, 432, 1, 430, 430, 1, 430, 433, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 430, 1, 430, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 434, 1, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 436, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 437, 437, 439, 440, 440, 440, 441, 1, 442, 1, 428, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 428, 1, 443, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 430, 431, 430, 430, 430, 430, 430, 445, 1, 430, 430, 1, 430, 446, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 430, 447, 430, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 436, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 437, 437, 439, 440, 440, 440, 441, 1, 443, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 1, 1, 1, 1, 1, 1, 1, 445, 1, 1, 1, 1, 1, 448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447, 1, 449, 1, 443, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 1, 450, 1, 1, 1, 451, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 450, 1, 1, 1, 1, 1, 1, 1, 452, 1, 1, 1, 1, 1, 453, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 1, 448, 1, 1, 1, 455, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 456, 1, 456, 456, 456, 456, 456, 457, 1, 456, 456, 1, 456, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 456, 1, 456, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 459, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, 460, 460, 462, 463, 463, 463, 464, 1, 465, 1, 448, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 1, 443, 1, 1, 1, 444, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 443, 456, 1, 456, 456, 456, 456, 456, 445, 1, 456, 456, 1, 456, 448, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 456, 447, 456, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 459, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, 460, 460, 462, 463, 463, 463, 464, 1, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, 1, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 1, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 1, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 1, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 1, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 1, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 1, 453, 1, 1, 1, 466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 453, 467, 1, 467, 467, 467, 467, 467, 468, 1, 467, 467, 1, 467, 1, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 1, 1, 1, 467, 1, 467, 1, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 1, 1, 1, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, 470, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 472, 471, 471, 473, 474, 474, 474, 475, 1, 476, 476, 476, 476, 476, 476, 476, 476, 431, 1, 476, 476, 477, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 431, 476, 1, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 478, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 480, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 482, 481, 481, 483, 484, 484, 484, 485, 1, 476, 476, 476, 476, 476, 476, 476, 476, 476, 1, 476, 476, 486, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 487, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 478, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 480, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 482, 481, 481, 483, 484, 484, 484, 485, 1, 488, 1, 476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 476, 1, 489, 1, 1, 1, 490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 489, 487, 431, 487, 487, 487, 487, 487, 491, 1, 487, 487, 1, 487, 433, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 447, 487, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 493, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 495, 494, 494, 496, 497, 497, 497, 498, 1, 489, 1, 1, 1, 490, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 489, 1, 1, 1, 1, 1, 1, 1, 491, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447, 1, 499, 1, 489, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 489, 1, 500, 1, 1, 1, 501, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 500, 1, 1, 1, 1, 1, 1, 1, 502, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 454, 1, 487, 431, 487, 487, 487, 487, 487, 1, 1, 487, 487, 1, 487, 433, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 1, 487, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 493, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 495, 494, 494, 496, 497, 497, 497, 498, 1, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 1, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 1, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, 1, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 1, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 1, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 1, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 480, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 482, 481, 481, 483, 484, 484, 484, 485, 1, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 476, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 1, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, 1, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 1, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 1, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 1, 503, 1, 431, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 431, 1, 448, 1, 1, 1, 455, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448, 430, 431, 430, 430, 430, 430, 430, 457, 1, 430, 430, 1, 430, 433, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 430, 1, 430, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 436, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 438, 437, 437, 439, 440, 440, 440, 441, 1, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 1, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 1, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 437, 1, 504, 1, 1, 1, 505, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 504, 506, 507, 506, 506, 506, 506, 506, 508, 1, 506, 506, 1, 506, 509, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 1, 1, 506, 1, 506, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 510, 1, 1, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 512, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, 514, 513, 513, 515, 516, 516, 516, 517, 1, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1, 434, 434, 518, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1, 519, 489, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 523, 522, 522, 524, 525, 525, 525, 526, 1, 527, 1, 434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 434, 1, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 521, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 523, 522, 522, 524, 525, 525, 525, 526, 1, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 1, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 1, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 1, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, 1, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 1, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 1, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 1, 528, 528, 528, 528, 528, 528, 528, 528, 528, 1, 528, 528, 529, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 530, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 531, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 534, 534, 536, 537, 537, 537, 538, 1, 539, 539, 539, 539, 539, 539, 539, 539, 539, 1, 539, 539, 540, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 541, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 542, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 544, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 546, 545, 545, 547, 548, 548, 548, 549, 1, 550, 1, 539, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 539, 1, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 544, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 546, 545, 545, 547, 548, 548, 548, 549, 1, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 1, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 1, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 1, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, 1, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 1, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 1, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 1, 390, 1, 1, 1, 551, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 390, 552, 553, 552, 552, 552, 552, 552, 554, 1, 552, 552, 1, 552, 1, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 552, 1, 552, 1, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 558, 557, 557, 559, 560, 560, 560, 561, 1, 562, 562, 562, 562, 562, 562, 562, 562, 369, 1, 562, 562, 563, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 369, 562, 1, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 564, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, 567, 567, 569, 570, 570, 570, 571, 1, 562, 562, 562, 562, 562, 562, 562, 562, 562, 1, 562, 562, 572, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 573, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 564, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, 567, 567, 569, 570, 570, 570, 571, 1, 574, 1, 562, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 562, 1, 575, 1, 1, 1, 576, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 575, 573, 369, 573, 573, 573, 573, 573, 577, 1, 573, 573, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 372, 573, 373, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 580, 580, 582, 583, 583, 583, 584, 1, 585, 1, 1, 1, 586, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 585, 1, 1, 1, 1, 1, 1, 1, 587, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 385, 1, 588, 1, 585, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 585, 1, 589, 1, 1, 1, 590, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 589, 1, 1, 1, 1, 1, 1, 1, 591, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 391, 1, 392, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 1, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, 567, 567, 569, 570, 570, 570, 571, 1, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 1, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, 1, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 1, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 1, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 1, 592, 1, 369, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 369, 1, 593, 1, 1, 1, 594, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 593, 368, 595, 368, 368, 368, 368, 368, 596, 1, 368, 368, 1, 368, 573, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 368, 372, 368, 373, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, 376, 376, 378, 379, 379, 379, 380, 1, 597, 1, 1, 1, 598, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 597, 394, 395, 394, 394, 394, 394, 394, 599, 1, 394, 394, 1, 394, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 34, 394, 385, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 398, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 399, 399, 401, 402, 402, 402, 403, 1, 600, 1, 597, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 597, 1, 601, 1, 1, 1, 602, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 601, 552, 553, 552, 552, 552, 552, 552, 603, 1, 552, 552, 1, 552, 1, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 552, 391, 552, 392, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 558, 557, 557, 559, 560, 560, 560, 561, 1, 604, 604, 604, 604, 604, 604, 604, 604, 605, 1, 604, 604, 606, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 605, 604, 530, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 607, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, 611, 610, 610, 612, 613, 613, 613, 614, 1, 615, 615, 615, 615, 615, 615, 615, 615, 615, 1, 615, 615, 616, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 617, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 618, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 622, 621, 621, 623, 624, 624, 624, 625, 1, 626, 1, 615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 615, 1, 366, 1, 1, 1, 367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 366, 573, 369, 573, 573, 573, 573, 573, 370, 1, 573, 573, 1, 573, 371, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 372, 573, 373, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 580, 580, 582, 583, 583, 583, 584, 1, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 622, 621, 621, 623, 624, 624, 624, 625, 1, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 1, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 1, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 1, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 1, 615, 615, 615, 615, 615, 615, 615, 615, 627, 1, 615, 615, 628, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 627, 615, 541, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 618, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, 622, 621, 621, 623, 624, 624, 624, 625, 1, 629, 1, 627, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 627, 1, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 1, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 1, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 1, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 1, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 1, 630, 630, 630, 630, 630, 630, 630, 630, 631, 1, 630, 630, 632, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 631, 630, 633, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 634, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 636, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 638, 637, 637, 639, 640, 640, 640, 641, 1, 642, 642, 642, 642, 642, 642, 642, 642, 642, 1, 642, 642, 643, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 644, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 645, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 649, 648, 648, 650, 651, 651, 651, 652, 1, 653, 1, 642, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 642, 1, 654, 1, 1, 1, 655, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 654, 573, 369, 573, 573, 573, 573, 573, 656, 1, 573, 573, 1, 573, 371, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 372, 573, 657, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 580, 580, 582, 583, 583, 583, 584, 1, 658, 1, 1, 1, 659, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 658, 1, 1, 1, 1, 1, 1, 1, 660, 1, 1, 1, 1, 1, 384, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 661, 1, 662, 1, 658, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 658, 1, 663, 1, 1, 1, 664, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 663, 1, 1, 1, 1, 1, 1, 1, 665, 1, 1, 1, 1, 1, 390, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 391, 1, 666, 1, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 649, 648, 648, 650, 651, 651, 651, 652, 1, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 1, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 1, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 1, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 1, 642, 642, 642, 642, 642, 642, 642, 642, 667, 1, 642, 642, 668, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 667, 642, 669, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 645, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, 647, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 649, 648, 648, 650, 651, 651, 651, 652, 1, 670, 1, 667, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 667, 1, 671, 1, 1, 1, 672, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 671, 1, 1, 1, 1, 1, 1, 1, 673, 1, 1, 1, 1, 1, 384, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 674, 1, 675, 1, 671, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 671, 1, 676, 1, 1, 1, 677, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 676, 1, 1, 1, 1, 1, 1, 1, 678, 1, 1, 1, 1, 1, 390, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 391, 1, 679, 1, 680, 1, 1, 1, 681, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 680, 682, 683, 682, 682, 682, 682, 682, 684, 1, 682, 682, 685, 682, 686, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 682, 1, 682, 687, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 689, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 691, 690, 690, 692, 693, 693, 693, 694, 1, 363, 1, 1, 1, 695, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 363, 1, 1, 1, 1, 1, 1, 1, 696, 1, 1, 1, 363, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 364, 1, 697, 1, 363, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 363, 1, 685, 1, 1, 1, 698, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 685, 1, 1, 1, 1, 1, 1, 1, 699, 1, 1, 1, 685, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 687, 1, 700, 1, 1, 1, 701, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 700, 702, 703, 702, 702, 702, 702, 702, 704, 1, 702, 702, 1, 702, 705, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 1, 1, 1, 702, 1, 702, 1, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 706, 1, 1, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, 708, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, 710, 709, 709, 711, 712, 712, 712, 713, 1, 714, 1, 1, 1, 715, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 714, 716, 717, 716, 716, 716, 716, 716, 718, 1, 716, 716, 1, 716, 719, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 716, 1, 716, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 720, 1, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 722, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 724, 723, 723, 725, 726, 726, 726, 727, 1, 728, 1, 714, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 714, 1, 729, 1, 1, 1, 730, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 729, 716, 717, 716, 716, 716, 716, 716, 731, 1, 716, 716, 732, 716, 733, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 734, 1, 1, 716, 1, 716, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 722, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 724, 723, 723, 725, 726, 726, 726, 727, 1, 729, 1, 1, 1, 730, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 729, 1, 1, 1, 1, 1, 1, 1, 731, 1, 1, 1, 732, 1, 735, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 734, 1, 736, 1, 729, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 729, 1, 737, 1, 1, 1, 738, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 737, 1, 1, 1, 1, 1, 1, 1, 739, 1, 1, 1, 740, 1, 741, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 742, 1, 743, 1, 1, 1, 744, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 743, 1, 1, 1, 1, 1, 1, 1, 745, 1, 1, 1, 743, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 746, 1, 1, 1, 1, 1, 364, 1, 747, 1, 743, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 743, 1, 748, 1, 1, 1, 749, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 748, 1, 1, 1, 1, 1, 1, 1, 750, 1, 1, 1, 748, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 751, 1, 1, 1, 1, 1, 687, 1, 752, 1, 1, 1, 753, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 752, 754, 755, 754, 754, 754, 754, 754, 756, 1, 754, 754, 1, 754, 757, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 1, 1, 754, 1, 754, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 1, 1, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 758, 759, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, 761, 760, 760, 762, 763, 763, 763, 764, 1, 765, 1, 1, 1, 766, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 765, 347, 348, 347, 347, 347, 347, 347, 767, 1, 347, 347, 1, 347, 351, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 1, 347, 1, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 355, 355, 357, 358, 358, 358, 359, 1, 768, 1, 765, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 765, 1, 769, 1, 1, 1, 770, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 769, 682, 683, 682, 682, 682, 682, 682, 771, 1, 682, 682, 1, 682, 686, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 682, 1, 682, 1, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, 689, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, 691, 690, 690, 692, 693, 693, 693, 694, 1, 573, 369, 573, 573, 573, 573, 573, 1, 1, 573, 573, 1, 573, 772, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 1, 573, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, 579, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, 581, 580, 580, 582, 583, 583, 583, 584, 1, 735, 1, 1, 1, 773, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 735, 774, 1, 774, 774, 774, 774, 774, 775, 1, 774, 774, 1, 774, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 1, 1, 774, 1, 774, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 1, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 777, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 779, 778, 778, 780, 781, 781, 781, 782, 1, 783, 1, 735, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 735, 1, 729, 1, 1, 1, 730, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 729, 774, 1, 774, 774, 774, 774, 774, 731, 1, 774, 774, 732, 774, 735, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 734, 1, 1, 774, 1, 774, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 1, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 777, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 779, 778, 778, 780, 781, 781, 781, 782, 1, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, 1, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 1, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 1, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, 1, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 1, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 1, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, 1, 741, 1, 1, 1, 784, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 741, 785, 1, 785, 785, 785, 785, 785, 786, 1, 785, 785, 1, 785, 1, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 1, 1, 1, 785, 1, 785, 1, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 1, 1, 1, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 785, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, 788, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, 790, 789, 789, 791, 792, 792, 792, 793, 1, 794, 794, 794, 794, 794, 794, 794, 794, 717, 1, 794, 794, 795, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 717, 794, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 796, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 800, 799, 799, 801, 802, 802, 802, 803, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 794, 794, 804, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 805, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 796, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 800, 799, 799, 801, 802, 802, 802, 803, 1, 806, 1, 794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 794, 1, 807, 1, 1, 1, 808, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 807, 805, 717, 805, 805, 805, 805, 805, 809, 1, 805, 805, 732, 805, 719, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 734, 1, 1, 805, 1, 805, 1, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 1, 1, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 811, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 813, 812, 812, 814, 815, 815, 815, 816, 1, 807, 1, 1, 1, 808, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 807, 1, 1, 1, 1, 1, 1, 1, 809, 1, 1, 1, 732, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 734, 1, 817, 1, 807, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 807, 1, 818, 1, 1, 1, 819, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 818, 1, 1, 1, 1, 1, 1, 1, 820, 1, 1, 1, 740, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 742, 1, 805, 717, 805, 805, 805, 805, 805, 1, 1, 805, 805, 1, 805, 719, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 1, 1, 805, 1, 805, 1, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 1, 1, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 811, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 813, 812, 812, 814, 815, 815, 815, 816, 1, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, 1, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 1, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 1, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, 1, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 1, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 1, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 798, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 800, 799, 799, 801, 802, 802, 802, 803, 1, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 1, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, 1, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 1, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 1, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 799, 1, 821, 1, 717, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 717, 1, 735, 1, 1, 1, 773, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 735, 716, 717, 716, 716, 716, 716, 716, 775, 1, 716, 716, 1, 716, 719, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 716, 1, 716, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 722, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 724, 723, 723, 725, 726, 726, 726, 727, 1, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 1, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, 1, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 1, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 1, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, 1, 822, 1, 1, 1, 823, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 822, 824, 825, 824, 824, 824, 824, 824, 826, 1, 824, 824, 1, 824, 827, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 1, 1, 1, 824, 1, 824, 1, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 828, 1, 1, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 830, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 831, 832, 831, 831, 833, 834, 834, 834, 835, 1, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1, 720, 720, 836, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1, 837, 807, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 839, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 841, 840, 840, 842, 843, 843, 843, 844, 1, 845, 1, 720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 720, 1, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 839, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 841, 840, 840, 842, 843, 843, 843, 844, 1, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, 1, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 1, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 1, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, 1, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 1, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 1, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, 1, 846, 1, 1, 1, 847, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 846, 848, 849, 848, 848, 848, 848, 848, 850, 1, 848, 848, 1, 848, 851, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 1, 1, 1, 848, 1, 848, 1, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 25, 1, 1, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, 853, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 855, 854, 854, 856, 857, 857, 857, 858, 1, 859, 1, 1, 1, 860, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 859, 861, 862, 861, 861, 861, 861, 861, 863, 1, 861, 861, 1, 861, 864, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 1, 1, 1, 861, 1, 861, 1, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 865, 1, 1, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 867, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 869, 868, 868, 870, 871, 871, 871, 872, 1, 873, 1, 859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 859, 1, 874, 1, 1, 1, 875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 874, 876, 877, 876, 876, 876, 876, 876, 878, 1, 876, 876, 1, 876, 879, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 880, 881, 876, 1, 876, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 882, 1, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 884, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 886, 885, 885, 887, 888, 888, 888, 889, 1, 874, 1, 1, 1, 875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 874, 890, 891, 890, 890, 890, 890, 890, 878, 1, 890, 890, 1, 890, 892, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 880, 893, 890, 1, 890, 1, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 882, 1, 1, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 895, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 897, 896, 896, 898, 899, 899, 899, 900, 1, 901, 1, 902, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 902, 1, 903, 1, 1, 1, 904, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 903, 905, 906, 905, 905, 905, 905, 905, 907, 1, 905, 905, 1, 905, 908, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 909, 910, 905, 1, 905, 1, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 911, 1, 1, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 914, 916, 917, 917, 917, 918, 1, 919, 1, 1, 1, 920, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 919, 921, 922, 921, 921, 921, 921, 921, 923, 1, 921, 921, 1, 921, 153, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 1, 1, 1, 921, 1, 921, 1, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 1, 1, 1, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 925, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 927, 926, 926, 928, 929, 929, 929, 930, 1, 919, 1, 1, 1, 920, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 919, 931, 1, 931, 931, 931, 931, 931, 923, 1, 931, 931, 1, 931, 1, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 1, 1, 1, 931, 1, 931, 1, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 1, 1, 1, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 933, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 935, 934, 934, 936, 937, 937, 937, 938, 1, 939, 1, 919, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 919, 1, 874, 1, 1, 1, 875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 874, 940, 941, 940, 940, 940, 940, 940, 878, 1, 940, 940, 1, 940, 942, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1, 880, 881, 940, 1, 940, 1, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 882, 1, 1, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 944, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 946, 945, 945, 947, 948, 948, 948, 949, 1, 874, 1, 1, 1, 875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 874, 940, 941, 940, 940, 940, 940, 940, 878, 1, 940, 940, 1, 940, 942, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1, 950, 881, 940, 1, 940, 43, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 882, 1, 1, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, 944, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, 946, 945, 945, 947, 948, 948, 948, 949, 1, 865, 865, 865, 865, 865, 865, 865, 865, 865, 1, 865, 865, 951, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 1, 952, 953, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 955, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 956, 956, 958, 959, 959, 959, 960, 1, 961, 1, 865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 865, 1, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 955, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 957, 956, 956, 958, 959, 959, 959, 960, 1, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, 1, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 1, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 1, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 1, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 1, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 1, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, 1, 962, 1, 1, 1, 963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 962, 964, 941, 964, 964, 964, 964, 964, 965, 1, 964, 964, 1, 964, 966, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 880, 881, 964, 1, 964, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 882, 1, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 968, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 970, 969, 969, 971, 972, 972, 972, 973, 1, 962, 1, 1, 1, 963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 962, 890, 891, 890, 890, 890, 890, 890, 965, 1, 890, 890, 1, 890, 974, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 880, 893, 890, 1, 890, 1, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 882, 1, 1, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 895, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 897, 896, 896, 898, 899, 899, 899, 900, 1, 975, 1, 976, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 976, 1, 977, 1, 1, 1, 978, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 977, 905, 906, 905, 905, 905, 905, 905, 979, 1, 905, 905, 1, 905, 980, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 909, 910, 905, 1, 905, 1, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 911, 1, 1, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 914, 916, 917, 917, 917, 918, 1, 981, 922, 981, 981, 981, 981, 981, 1, 1, 981, 981, 1, 981, 153, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 1, 1, 1, 981, 1, 981, 1, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 1, 1, 1, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 983, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 985, 984, 984, 986, 987, 987, 987, 988, 1, 989, 1, 1, 1, 990, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 989, 37, 38, 37, 37, 37, 37, 37, 991, 1, 37, 37, 1, 37, 40, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 41, 42, 37, 1, 37, 43, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 44, 1, 1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 992, 1, 1, 1, 993, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 992, 54, 55, 54, 54, 54, 54, 54, 994, 1, 54, 54, 1, 54, 995, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 58, 59, 54, 1, 54, 60, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 61, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 66, 67, 67, 67, 68, 1, 996, 1, 997, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 997, 1, 998, 1, 1, 1, 999, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 998, 1000, 1001, 1000, 1000, 1000, 1000, 1000, 1002, 1, 1000, 1000, 1, 1000, 1003, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1004, 1005, 1000, 1, 1000, 1006, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1007, 1, 1, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1010, 1010, 1012, 1013, 1013, 1013, 1014, 1, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1, 1018, 1, 1, 1, 1019, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1018, 1020, 1021, 1020, 1020, 1020, 1020, 1020, 1022, 1, 1020, 1020, 1, 1020, 1023, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1, 1024, 1025, 1020, 1, 1020, 43, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1026, 1, 1, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1030, 1029, 1029, 1031, 1032, 1032, 1032, 1033, 1, 1034, 1, 1, 1, 1035, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1034, 1036, 1037, 1036, 1036, 1036, 1036, 1036, 1038, 1, 1036, 1036, 1, 1036, 1039, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1, 1040, 1041, 1036, 1, 1036, 60, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1042, 1, 1, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1045, 1045, 1047, 1048, 1048, 1048, 1049, 1, 1050, 1, 1051, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1051, 1, 1052, 1, 1, 1, 1053, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1052, 1054, 1055, 1054, 1054, 1054, 1054, 1054, 1056, 1, 1054, 1054, 1, 1054, 1057, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1, 1058, 1059, 1054, 1, 1054, 1006, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1060, 1, 1, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1063, 1063, 1065, 1066, 1066, 1066, 1067, 1, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 922, 1, 1068, 1068, 1069, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 922, 1068, 1, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1070, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1073, 1075, 1076, 1076, 1076, 1077, 1, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1, 1068, 1068, 1078, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 981, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1070, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1073, 1075, 1076, 1076, 1076, 1077, 1, 1079, 1, 1068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1068, 1, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1073, 1073, 1075, 1076, 1076, 1076, 1077, 1, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1, 1080, 1, 922, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 922, 1, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, 1, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, 1, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 1, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 1, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 1, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, 1, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 1, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 1, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, 1, 1081, 1, 1, 1, 1082, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1081, 1083, 1, 1083, 1083, 1083, 1083, 1083, 1084, 1, 1083, 1083, 1, 1083, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1, 1, 1083, 1, 1083, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1, 1, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088, 1087, 1087, 1089, 1090, 1090, 1090, 1091, 1, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, 1, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 1, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 1, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 932, 1, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 1, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 1, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, 1, 874, 1, 1, 1, 875, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 874, 876, 877, 876, 876, 876, 876, 876, 878, 1, 876, 876, 1, 876, 879, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 950, 881, 876, 1, 876, 43, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 882, 1, 1, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, 884, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 886, 885, 885, 887, 888, 888, 888, 889, 1, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093, 1, 1092, 1092, 1094, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093, 1092, 74, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1095, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1098, 1098, 1100, 1101, 1101, 1101, 1102, 1, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1, 1103, 1103, 1104, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1105, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1106, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1110, 1109, 1109, 1111, 1112, 1112, 1112, 1113, 1, 1114, 1, 1103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1103, 1, 962, 1, 1, 1, 963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 962, 1115, 877, 1115, 1115, 1115, 1115, 1115, 965, 1, 1115, 1115, 1, 1115, 1116, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1117, 881, 1115, 1, 1115, 103, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 882, 1, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1120, 1120, 1122, 1123, 1123, 1123, 1124, 1, 962, 1, 1, 1, 963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 962, 1115, 877, 1115, 1115, 1115, 1115, 1115, 965, 1, 1115, 1115, 1, 1115, 1116, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 950, 881, 1115, 1, 1115, 43, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 882, 1, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1120, 1120, 1122, 1123, 1123, 1123, 1124, 1, 1125, 1126, 1125, 1125, 1125, 1125, 1125, 1, 1, 1125, 1125, 1, 1125, 1127, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1, 1, 1, 1125, 1, 1125, 1, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1, 1, 1, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131, 1130, 1130, 1132, 1133, 1133, 1133, 1134, 1, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1126, 1, 1135, 1135, 1136, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1126, 1135, 1, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1137, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141, 1140, 1140, 1142, 1143, 1143, 1143, 1144, 1, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1, 1135, 1135, 1145, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1125, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1137, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141, 1140, 1140, 1142, 1143, 1143, 1143, 1144, 1, 1146, 1, 1135, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1135, 1, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141, 1140, 1140, 1142, 1143, 1143, 1143, 1144, 1, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1, 1147, 1, 1126, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1126, 1, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1110, 1109, 1109, 1111, 1112, 1112, 1112, 1113, 1, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1148, 1, 1103, 1103, 1149, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1148, 1103, 1150, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1106, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1110, 1109, 1109, 1111, 1112, 1112, 1112, 1113, 1, 1151, 1, 1148, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1148, 1, 1152, 1, 1, 1, 1153, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1152, 1154, 1155, 1154, 1154, 1154, 1154, 1154, 1156, 1, 1154, 1154, 1, 1154, 1157, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1, 1158, 1159, 1154, 1, 1154, 1160, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1161, 1, 1, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 1164, 1164, 1166, 1167, 1167, 1167, 1168, 1, 1152, 1, 1, 1, 1153, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1152, 1169, 1170, 1169, 1169, 1169, 1169, 1169, 1156, 1, 1169, 1169, 1, 1169, 1171, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1, 1158, 1172, 1169, 1, 1169, 1160, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1161, 1, 1, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176, 1175, 1175, 1177, 1178, 1178, 1178, 1179, 1, 1180, 1, 1181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1181, 1, 1182, 1, 1, 1, 1183, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1182, 1184, 1185, 1184, 1184, 1184, 1184, 1184, 1186, 1, 1184, 1184, 1, 1184, 1187, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1, 1188, 1189, 1184, 1, 1184, 1190, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1191, 1, 1, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195, 1194, 1194, 1196, 1197, 1197, 1197, 1198, 1, 919, 1, 1, 1, 920, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 919, 1199, 1126, 1199, 1199, 1199, 1199, 1199, 923, 1, 1199, 1199, 1, 1199, 1127, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1, 1, 1, 1199, 1, 1199, 1, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1, 1, 1, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203, 1202, 1202, 1204, 1205, 1205, 1205, 1206, 1, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 862, 1, 1207, 1207, 1208, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 862, 1207, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1212, 1212, 1214, 1215, 1215, 1215, 1216, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1207, 1207, 1217, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1218, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1209, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1212, 1212, 1214, 1215, 1215, 1215, 1216, 1, 1219, 1, 1207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1207, 1, 962, 1, 1, 1, 963, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 962, 1115, 877, 1115, 1115, 1115, 1115, 1115, 965, 1, 1115, 1115, 1, 1115, 1116, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 880, 881, 1115, 1, 1115, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 882, 1, 1, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1120, 1120, 1122, 1123, 1123, 1123, 1124, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1211, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1212, 1212, 1214, 1215, 1215, 1215, 1216, 1, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1, 1220, 1, 862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 862, 1, 1221, 1, 1, 1, 1222, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1221, 1223, 1224, 1223, 1223, 1223, 1223, 1223, 1225, 1, 1223, 1223, 1, 1223, 1226, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1, 1, 1223, 1, 1223, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1227, 1, 1, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1231, 1230, 1230, 1232, 1233, 1233, 1233, 1234, 1, 1218, 862, 1218, 1218, 1218, 1218, 1218, 1, 1, 1218, 1218, 1, 1218, 864, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1, 1, 1, 1218, 1, 1218, 1, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1, 1, 1, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1238, 1237, 1237, 1239, 1240, 1240, 1240, 1241, 1, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 861, 1, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 1, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 1, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 1, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 1, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 1, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 1, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1, 1242, 1242, 1243, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1244, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1245, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1247, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1249, 1248, 1248, 1250, 1251, 1251, 1251, 1252, 1, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1253, 1253, 1254, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1255, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1256, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1259, 1259, 1261, 1262, 1262, 1262, 1263, 1, 1264, 1, 1253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1253, 1, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1259, 1259, 1261, 1262, 1262, 1262, 1263, 1, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1, 1265, 1, 1, 1, 1266, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1265, 1267, 1268, 1267, 1267, 1267, 1267, 1267, 1269, 1, 1267, 1267, 1, 1267, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1, 1, 1267, 1, 1267, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1, 1, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1271, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1273, 1272, 1272, 1274, 1275, 1275, 1275, 1276, 1, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 1, 1277, 1, 1, 1, 1278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1277, 37, 38, 37, 37, 37, 37, 37, 1279, 1, 37, 37, 1, 37, 40, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 41, 42, 37, 1, 37, 43, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 44, 1, 1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 1280, 1, 1, 1, 1281, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1280, 54, 55, 54, 54, 54, 54, 54, 1282, 1, 54, 54, 1, 54, 1283, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 58, 59, 54, 1, 54, 60, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 61, 1, 1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 64, 64, 66, 67, 67, 67, 68, 1, 1284, 1, 1285, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1285, 1, 1286, 1, 1, 1, 1287, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1286, 1000, 1001, 1000, 1000, 1000, 1000, 1000, 1288, 1, 1000, 1000, 1, 1000, 1289, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1004, 1005, 1000, 1, 1000, 1006, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1007, 1, 1, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1010, 1010, 1012, 1013, 1013, 1013, 1014, 1, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1291, 1, 1290, 1290, 1292, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1291, 1290, 1244, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1293, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1295, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1297, 1296, 1296, 1298, 1299, 1299, 1299, 1300, 1, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1, 1301, 1301, 1302, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1303, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1304, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1307, 1307, 1309, 1310, 1310, 1310, 1311, 1, 1312, 1, 1301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1301, 1, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1307, 1307, 1309, 1310, 1310, 1310, 1311, 1, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1313, 1, 1301, 1301, 1314, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1313, 1301, 1255, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1304, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1307, 1307, 1309, 1310, 1310, 1310, 1311, 1, 1315, 1, 1313, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1313, 1, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 89, 89, 91, 92, 92, 92, 93, 1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 1, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 1, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 1, 83, 83, 83, 83, 83, 83, 83, 83, 1316, 1, 83, 83, 1317, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1316, 83, 1150, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 86, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 89, 89, 91, 92, 92, 92, 93, 1, 1318, 1, 1316, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1316, 1, 1319, 1, 1, 1, 1320, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1319, 1000, 1001, 1000, 1000, 1000, 1000, 1000, 1321, 1, 1000, 1000, 1, 1000, 1322, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1004, 1005, 1000, 1, 1000, 1006, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1007, 1, 1, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1010, 1010, 1012, 1013, 1013, 1013, 1014, 1, 1323, 1, 1, 1, 1324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1323, 1325, 151, 1325, 1325, 1325, 1325, 1325, 1326, 1, 1325, 1325, 1, 1325, 153, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1, 1, 1325, 1, 1325, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1328, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1330, 1329, 1329, 1331, 1332, 1332, 1332, 1333, 1, 1323, 1, 1, 1, 1324, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1323, 1334, 162, 1334, 1334, 1334, 1334, 1334, 1326, 1, 1334, 1334, 1, 1334, 1, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1, 1, 1, 1334, 1, 1334, 1, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1, 1, 1, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1336, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1338, 1337, 1337, 1339, 1340, 1340, 1340, 1341, 1, 1342, 1, 1323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1323, 1, 1343, 1, 1, 1, 1344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1343, 964, 941, 964, 964, 964, 964, 964, 1345, 1, 964, 964, 1, 964, 1346, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 880, 881, 964, 1, 964, 175, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 882, 1, 1, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 964, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, 968, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, 970, 969, 969, 971, 972, 972, 972, 973, 1, 1343, 1, 1, 1, 1344, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1343, 890, 891, 890, 890, 890, 890, 890, 1345, 1, 890, 890, 1, 890, 1347, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 880, 893, 890, 1, 890, 175, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 882, 1, 1, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 894, 895, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, 897, 896, 896, 898, 899, 899, 899, 900, 1, 1348, 1, 1349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1349, 1, 1350, 1, 1, 1, 1351, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1350, 905, 906, 905, 905, 905, 905, 905, 1352, 1, 905, 905, 1, 905, 1353, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 909, 910, 905, 1, 905, 185, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 911, 1, 1, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 913, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 915, 914, 914, 916, 917, 917, 917, 918, 1, 1354, 1, 1, 1, 1355, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1354, 1356, 1268, 1356, 1356, 1356, 1356, 1356, 1357, 1, 1356, 1356, 1, 1356, 1, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1, 1, 1, 1356, 1, 1356, 1, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1, 1, 1, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1359, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1361, 1360, 1360, 1362, 1363, 1363, 1363, 1364, 1, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1337, 1, 35, 1, 1, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 37, 38, 37, 37, 37, 37, 37, 1365, 1, 37, 37, 1, 37, 40, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 41, 42, 37, 1, 37, 43, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 44, 1, 1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, 50, 50, 50, 51, 1, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1, 1366, 1, 1, 1, 1367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1366, 179, 180, 179, 179, 179, 179, 179, 1368, 1, 179, 179, 1, 179, 1369, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 183, 184, 179, 1, 179, 1, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 186, 1, 1, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 189, 189, 191, 192, 192, 192, 193, 1, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1, 1370, 1370, 1371, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1372, 1373, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1374, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1376, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378, 1377, 1377, 1379, 1380, 1380, 1380, 1381, 1, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1, 1382, 1382, 1383, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1384, 1385, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1386, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1390, 1389, 1389, 1391, 1392, 1392, 1392, 1393, 1, 1394, 1, 1382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1382, 1, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1390, 1389, 1389, 1391, 1392, 1392, 1392, 1393, 1, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1, 1395, 1, 1, 1, 1396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1395, 1, 1, 1, 1, 1, 1, 1, 1397, 1, 311, 1, 1, 1, 1398, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 311, 1, 1, 1, 1, 1, 1, 1, 1399, 1, 1400, 1, 1, 1, 1401, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1400, 1, 1, 1, 1, 1, 1, 1, 1402, 1, 1395, 1, 1, 1, 1396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1395, 1, 1, 1, 1, 1, 1, 1, 1397, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1403, 1, 1395, 1, 1, 1, 1396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1395, 1, 1, 1, 1, 1, 1, 1, 1397, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1403, 1, 1395, 1, 1, 1, 1396, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1395, 1, 1, 1, 1, 1, 1, 1, 1397, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 283, 1, 1, 0, ] class << self attr_accessor :_trans_targs private :_trans_targs, :_trans_targs= end self._trans_targs = [ 2, 0, 3, 5, 9, 635, 413, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 2, 3, 5, 9, 635, 413, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 4, 2, 6, 7, 5, 9, 609, 426, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 6, 7, 5, 9, 609, 610, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 8, 6, 10, 606, 607, 507, 598, 599, 600, 601, 602, 603, 604, 605, 10, 11, 13, 598, 599, 600, 601, 602, 603, 604, 605, 12, 14, 15, 5, 9, 17, 426, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 14, 15, 5, 9, 17, 18, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 16, 14, 14, 15, 5, 9, 17, 18, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 19, 20, 571, 576, 563, 413, 591, 592, 593, 594, 595, 596, 597, 22, 551, 564, 565, 566, 567, 568, 569, 570, 21, 22, 23, 25, 18, 382, 24, 22, 23, 5, 9, 25, 18, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 27, 28, 30, 31, 96, 107, 109, 111, 114, 27, 28, 30, 31, 29, 27, 28, 30, 31, 96, 107, 109, 111, 114, 32, 33, 35, 36, 81, 83, 85, 88, 90, 92, 94, 34, 32, 33, 35, 36, 81, 83, 85, 88, 90, 92, 94, 37, 80, 38, 39, 41, 42, 40, 38, 39, 41, 42, 43, 44, 45, 47, 48, 46, 44, 45, 47, 48, 49, 50, 52, 53, 51, 49, 50, 52, 53, 54, 56, 57, 55, 54, 56, 57, 58, 59, 60, 62, 63, 73, 648, 651, 652, 653, 61, 59, 60, 62, 63, 64, 66, 67, 65, 64, 66, 67, 68, 69, 70, 72, 71, 69, 70, 72, 74, 75, 76, 78, 649, 82, 84, 86, 87, 89, 91, 93, 95, 97, 98, 99, 101, 102, 100, 98, 99, 101, 102, 103, 104, 106, 103, 104, 106, 105, 103, 104, 106, 108, 110, 112, 113, 115, 117, 118, 120, 275, 299, 300, 322, 304, 268, 269, 270, 271, 272, 273, 274, 117, 118, 299, 300, 304, 119, 121, 122, 120, 221, 124, 247, 2, 133, 268, 269, 270, 271, 272, 273, 274, 121, 122, 124, 125, 133, 123, 121, 122, 124, 125, 2, 133, 126, 128, 208, 220, 201, 202, 203, 204, 205, 206, 207, 127, 129, 130, 132, 133, 131, 129, 130, 132, 133, 134, 135, 137, 154, 189, 163, 190, 182, 183, 184, 185, 186, 187, 188, 134, 135, 137, 154, 189, 163, 190, 182, 183, 184, 185, 186, 187, 188, 136, 138, 139, 141, 181, 2, 142, 140, 138, 139, 141, 142, 2, 143, 145, 153, 146, 147, 148, 149, 150, 151, 152, 144, 143, 145, 153, 146, 147, 148, 149, 150, 151, 152, 155, 179, 171, 172, 173, 174, 175, 176, 177, 178, 156, 158, 157, 159, 160, 162, 164, 165, 166, 167, 168, 169, 170, 161, 159, 160, 162, 180, 134, 135, 137, 154, 189, 163, 190, 182, 183, 184, 185, 186, 187, 188, 191, 193, 194, 195, 196, 197, 198, 199, 200, 192, 209, 210, 129, 212, 213, 214, 215, 216, 217, 218, 219, 209, 210, 129, 212, 213, 214, 215, 216, 217, 218, 219, 211, 126, 128, 208, 220, 201, 202, 203, 204, 205, 206, 207, 222, 245, 237, 238, 239, 240, 241, 242, 243, 244, 223, 225, 224, 226, 227, 229, 230, 231, 232, 233, 234, 235, 236, 226, 227, 229, 228, 226, 227, 229, 246, 248, 249, 252, 251, 248, 249, 251, 250, 248, 249, 251, 253, 265, 266, 257, 258, 259, 260, 261, 262, 263, 264, 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 255, 265, 266, 267, 276, 292, 293, 295, 284, 285, 286, 287, 288, 289, 290, 291, 276, 277, 279, 284, 285, 286, 287, 288, 289, 290, 291, 278, 280, 281, 283, 133, 280, 281, 283, 133, 282, 280, 281, 283, 133, 292, 293, 295, 294, 295, 296, 298, 133, 297, 295, 296, 298, 133, 117, 118, 120, 275, 299, 300, 322, 304, 268, 269, 270, 271, 272, 273, 274, 301, 303, 302, 301, 303, 305, 306, 308, 335, 370, 344, 371, 363, 364, 365, 366, 367, 368, 369, 305, 306, 308, 335, 370, 344, 371, 363, 364, 365, 366, 367, 368, 369, 307, 309, 310, 312, 313, 362, 317, 323, 311, 309, 310, 312, 313, 323, 317, 313, 314, 316, 317, 315, 313, 314, 316, 317, 318, 319, 120, 275, 321, 322, 268, 269, 270, 271, 272, 273, 274, 318, 319, 321, 320, 318, 319, 321, 322, 324, 326, 334, 327, 328, 329, 330, 331, 332, 333, 325, 324, 326, 334, 327, 328, 329, 330, 331, 332, 333, 336, 360, 352, 353, 354, 355, 356, 357, 358, 359, 337, 339, 338, 340, 341, 343, 345, 346, 347, 348, 349, 350, 351, 342, 340, 341, 343, 361, 305, 306, 308, 335, 370, 344, 371, 363, 364, 365, 366, 367, 368, 369, 372, 374, 375, 376, 377, 378, 379, 380, 381, 373, 383, 384, 386, 520, 535, 536, 544, 545, 546, 547, 548, 549, 550, 383, 384, 386, 520, 535, 536, 397, 544, 545, 546, 547, 548, 549, 550, 385, 387, 388, 467, 468, 390, 512, 26, 116, 397, 513, 514, 515, 516, 517, 518, 519, 5, 9, 391, 116, 419, 420, 421, 422, 423, 424, 425, 389, 387, 387, 388, 5, 9, 390, 391, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 392, 393, 396, 431, 459, 452, 453, 454, 455, 456, 457, 458, 395, 460, 461, 462, 463, 464, 465, 466, 394, 396, 9, 391, 452, 453, 454, 455, 456, 457, 458, 26, 398, 400, 408, 401, 402, 403, 404, 405, 406, 407, 399, 409, 410, 5, 412, 413, 419, 420, 421, 422, 423, 424, 425, 413, 411, 409, 409, 410, 412, 413, 414, 445, 446, 447, 448, 449, 450, 451, 415, 416, 418, 415, 416, 418, 413, 417, 415, 415, 416, 5, 9, 418, 413, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 5, 419, 421, 427, 428, 5, 9, 430, 426, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 427, 428, 5, 9, 430, 413, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 429, 427, 427, 428, 5, 9, 430, 413, 26, 116, 397, 419, 420, 421, 422, 423, 424, 425, 432, 443, 435, 436, 437, 438, 439, 440, 441, 442, 433, 434, 444, 392, 393, 395, 459, 460, 461, 462, 463, 464, 465, 466, 469, 504, 505, 496, 497, 498, 499, 500, 501, 502, 503, 469, 470, 472, 496, 497, 498, 499, 500, 501, 502, 503, 471, 473, 474, 26, 489, 490, 491, 492, 493, 494, 495, 473, 475, 474, 489, 490, 491, 492, 493, 494, 495, 476, 487, 479, 480, 481, 482, 483, 484, 485, 486, 477, 478, 488, 504, 505, 507, 506, 508, 509, 5, 9, 511, 18, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 5, 9, 18, 116, 419, 420, 421, 422, 423, 424, 425, 510, 508, 508, 509, 5, 9, 511, 18, 26, 116, 382, 397, 419, 420, 421, 422, 423, 424, 425, 467, 513, 514, 515, 516, 517, 518, 519, 521, 533, 525, 526, 527, 528, 529, 530, 531, 532, 522, 524, 523, 534, 383, 384, 386, 520, 535, 536, 397, 544, 545, 546, 547, 548, 549, 550, 537, 538, 539, 540, 541, 542, 543, 552, 553, 22, 555, 556, 557, 558, 559, 560, 561, 562, 552, 553, 22, 555, 556, 557, 558, 559, 560, 561, 562, 554, 19, 20, 22, 551, 563, 564, 565, 566, 567, 568, 569, 570, 572, 573, 575, 572, 573, 575, 18, 574, 572, 572, 573, 575, 18, 577, 588, 589, 580, 581, 582, 583, 584, 585, 586, 587, 577, 578, 571, 580, 581, 582, 583, 584, 585, 586, 587, 579, 588, 589, 590, 606, 607, 608, 6, 7, 609, 610, 611, 612, 627, 619, 628, 629, 630, 631, 632, 633, 634, 614, 620, 621, 622, 623, 624, 625, 626, 613, 615, 616, 618, 610, 610, 617, 615, 615, 616, 618, 610, 611, 612, 614, 619, 620, 621, 622, 623, 624, 625, 626, 609, 2, 3, 635, 413, 637, 638, 637, 654, 640, 641, 642, 643, 644, 645, 646, 647, 637, 638, 637, 654, 640, 641, 642, 643, 644, 645, 646, 647, 639, 649, 77, 650, 77, 650, 649, 77, 650, 79, ] class << self attr_accessor :_trans_actions private :_trans_actions, :_trans_actions= end self._trans_actions = [ 1, 0, 1, 1, 1, 2, 1, 3, 4, 5, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 7, 6, 8, 9, 10, 6, 6, 6, 6, 6, 6, 6, 0, 0, 11, 11, 11, 11, 12, 11, 13, 14, 15, 16, 11, 11, 11, 11, 11, 11, 11, 17, 17, 18, 18, 19, 18, 20, 21, 22, 23, 18, 18, 18, 18, 18, 18, 18, 0, 0, 24, 24, 24, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 27, 28, 27, 29, 30, 31, 32, 27, 27, 27, 27, 27, 27, 27, 33, 33, 34, 34, 35, 34, 36, 37, 38, 39, 34, 34, 34, 34, 34, 34, 34, 0, 0, 40, 40, 41, 41, 42, 41, 43, 44, 45, 46, 41, 41, 41, 41, 41, 41, 41, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 6, 0, 0, 48, 48, 48, 48, 49, 48, 50, 51, 52, 53, 48, 48, 48, 48, 48, 48, 48, 54, 54, 55, 54, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 52, 52, 56, 52, 52, 52, 52, 52, 52, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 47, 0, 0, 52, 52, 56, 52, 0, 0, 0, 47, 57, 0, 52, 52, 56, 58, 0, 0, 47, 0, 0, 52, 52, 56, 52, 0, 47, 0, 0, 52, 56, 52, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 52, 0, 47, 0, 0, 52, 56, 52, 0, 0, 0, 47, 0, 52, 52, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 52, 52, 56, 52, 54, 54, 59, 0, 0, 47, 0, 52, 52, 56, 0, 0, 0, 0, 0, 60, 60, 61, 61, 62, 63, 61, 63, 61, 61, 61, 61, 61, 61, 61, 0, 0, 47, 0, 0, 0, 64, 64, 0, 0, 65, 0, 64, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 22, 0, 52, 52, 56, 52, 52, 66, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 52, 52, 56, 52, 10, 10, 10, 10, 67, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 68, 0, 0, 52, 52, 56, 52, 69, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 0, 52, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 52, 52, 56, 0, 64, 64, 0, 65, 0, 0, 47, 0, 52, 52, 56, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 65, 31, 0, 0, 47, 38, 0, 52, 52, 56, 45, 0, 0, 26, 0, 0, 0, 47, 70, 0, 52, 52, 56, 71, 52, 52, 72, 72, 56, 52, 72, 52, 72, 72, 72, 72, 72, 72, 72, 0, 47, 0, 52, 56, 10, 10, 10, 10, 67, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 68, 0, 68, 0, 0, 52, 52, 56, 69, 52, 69, 0, 0, 47, 0, 0, 52, 52, 56, 52, 73, 73, 73, 73, 74, 73, 73, 73, 73, 73, 73, 73, 73, 0, 0, 47, 0, 52, 52, 56, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 56, 0, 52, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 67, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 76, 75, 77, 78, 79, 75, 75, 75, 75, 75, 75, 75, 80, 80, 80, 81, 80, 80, 80, 80, 80, 80, 80, 0, 0, 82, 82, 83, 83, 84, 83, 85, 86, 87, 83, 83, 83, 83, 83, 83, 83, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 80, 0, 0, 82, 82, 84, 83, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 89, 17, 17, 19, 18, 0, 0, 90, 90, 91, 91, 92, 91, 93, 94, 66, 95, 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 96, 96, 96, 96, 97, 96, 98, 99, 100, 96, 96, 96, 96, 96, 96, 96, 101, 101, 102, 102, 103, 102, 104, 105, 106, 102, 102, 102, 102, 102, 102, 102, 0, 0, 107, 107, 108, 108, 109, 108, 110, 111, 112, 108, 108, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 113, 75, 75, 75, 75, 75, 75, 75, 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, 26, 0, 114, 114, 114, 114, 115, 114, 116, 117, 70, 118, 114, 114, 114, 114, 114, 114, 114, 119, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119, 0, 0, 121, 121, 122, 122, 123, 122, 124, 125, 71, 126, 122, 122, 122, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 24, 24, 25, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 11, 11, 89, 17, 17, 19, 18, 0, 0, 90, 90, 92, 91, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 92, 91, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 75, 76, 75, 80, 0, 0, 82, 82, 84, 83, 52, 52, 52, 56, 52, 52, 52, 52, 52, 52, 52, 89, 48, 48, 49, 48, 127, 127, 128, 129, 127, 127, 127, 127, 127, 127, 127, 127, 0, 0, 47, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 131, 132, 0, 47, 52, 52, 56, 0, ] class << self attr_accessor :_eof_actions private :_eof_actions, :_eof_actions= end self._eof_actions = [ 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, 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, 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, 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, 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, 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, 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, 131, 0, 52, 131, 131, 131, 0, ] class << self attr_accessor :start end self.start = 1 class << self attr_accessor :first_final end self.first_final = 648 class << self attr_accessor :error end self.error = 0 class << self attr_accessor :en_comment_tail end self.en_comment_tail = 636 class << self attr_accessor :en_main end self.en_main = 1 def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::ReceivedElement) if data.nil? # Parser state received = ReceivedStruct.new received_tokens_s = date_s = time_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] begin p ||= 0 pe ||= data.length cs = start top = 0 end begin testEof = false _slen, _trans, _keys, _inds, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if cs == 0 _goto_level = _out next end end if _goto_level <= _resume _keys = cs << 1 _inds = _index_offsets[cs] _slen = _key_spans[cs] _wide = data[p].ord _trans = if (_slen > 0 && _trans_keys[_keys] <= _wide && _wide <= _trans_keys[_keys + 1]) _indicies[_inds + _wide - _trans_keys[_keys]] else _indicies[_inds + _slen] end cs = _trans_targs[_trans] if _trans_actions[_trans] != 0 case _trans_actions[_trans] when 8 begin received.info = chars(data, received_tokens_s, p - 1) end when 54 begin date_s = p end when 131 begin received.time = chars(data, time_s, p - 1) end when 9 begin end when 52 begin end when 127 begin end when 68 begin end when 10 begin end when 22 begin end when 64 begin end when 61 begin end when 26 begin end when 24 begin end when 70 begin end when 63 begin end when 47 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 130 begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 3 begin received_tokens_s = p end begin received.info = chars(data, received_tokens_s, p - 1) end when 4 begin received_tokens_s = p end begin end when 5 begin received_tokens_s = p end begin end when 59 begin date_s = p end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 57 begin received.date = chars(data, date_s, p - 1).strip end begin time_s = p end when 132 begin received.time = chars(data, time_s, p - 1) end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 81 begin end begin end when 105 begin end begin end when 120 begin end begin end when 50 begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 51 begin end begin end when 69 begin end begin end when 53 begin end begin end when 66 begin end begin end when 72 begin end begin end when 71 begin end begin end when 56 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 128 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 129 begin end begin begin top -= 1 cs = stack[top] _goto_level = _again next end end when 77 begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 78 begin end begin end when 79 begin end begin end when 67 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 104 begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 106 begin end begin end when 38 begin end begin end when 15 begin end begin end when 65 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 6 begin end begin end when 60 begin end begin end when 25 begin end begin end when 116 begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 117 begin end begin end when 118 begin end begin end when 73 begin end begin end when 55 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin date_s = p end when 1 begin received_tokens_s = p end begin end begin end when 21 begin end begin end begin end when 58 begin end begin received.date = chars(data, date_s, p - 1).strip end begin time_s = p end when 86 begin end begin end begin end when 111 begin end begin end begin end when 125 begin end begin end begin end when 85 begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 87 begin end begin end begin end when 110 begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 112 begin end begin end begin end when 45 begin end begin end begin end when 48 begin end begin end begin end when 124 begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 126 begin end begin end begin end when 75 begin end begin end begin end when 20 begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 23 begin end begin end begin end when 101 begin end begin end begin end when 98 begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 99 begin end begin end begin end when 100 begin end begin end begin end when 31 begin end begin end begin end when 80 begin end begin end begin end when 102 begin end begin end begin end when 119 begin end begin end begin end when 62 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end when 114 begin end begin end begin end when 74 begin end begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end when 7 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end when 2 begin received_tokens_s = p end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end when 37 begin end begin end begin end begin end when 94 begin end begin end begin end begin end when 82 begin end begin end begin end begin end when 93 begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 95 begin end begin end begin end begin end when 107 begin end begin end begin end begin end when 83 begin end begin end begin end begin end when 108 begin end begin end begin end begin end when 122 begin end begin end begin end begin end when 121 begin end begin end begin end begin end when 49 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end when 88 begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 17 begin end begin end begin end begin end when 36 begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 39 begin end begin end begin end begin end when 13 begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 14 begin end begin end begin end begin end when 16 begin end begin end begin end begin end when 96 begin end begin end begin end begin end when 18 begin end begin end begin end begin end when 76 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 103 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 115 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 44 begin end begin end begin end begin end begin end when 90 begin end begin end begin end begin end begin end when 43 begin end begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 46 begin end begin end begin end begin end begin end when 91 begin end begin end begin end begin end begin end when 84 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 109 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 123 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 113 begin end begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 33 begin end begin end begin end begin end begin end when 11 begin end begin end begin end begin end begin end when 29 begin end begin end begin end begin end begin received.info = chars(data, received_tokens_s, p - 1) end when 30 begin end begin end begin end begin end begin end when 32 begin end begin end begin end begin end begin end when 97 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end when 34 begin end begin end begin end begin end begin end when 19 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end when 40 begin end begin end begin end begin end begin end begin end when 41 begin end begin end begin end begin end begin end begin end when 92 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end when 27 begin end begin end begin end begin end begin end begin end when 89 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end when 35 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end begin end when 12 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end begin end when 42 begin end begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end begin end when 28 begin begin stack[top] = cs top += 1 cs = 636 _goto_level = _again next end end begin end begin end begin end begin end begin end begin end end end end if _goto_level <= _again if cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof case _eof_actions[cs] when 131 begin received.time = chars(data, time_s, p - 1) end when 52 begin end end end end if _goto_level <= _out break end end end if p != eof || cs < 648 raise Mail::Field::IncompleteParseError.new(Mail::ReceivedElement, data, p) end received end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/received_parser.rl000066400000000000000000000040621436372131700213250ustar00rootroot00000000000000# frozen_string_literal: true require 'mail/utilities' require 'mail/parser_tools' begin original_verbose, $VERBOSE = $VERBOSE, nil %%{ machine date_time; alphtype int; # Received Tokens action received_tokens_s { received_tokens_s = p } action received_tokens_e { received.info = chars(data, received_tokens_s, p-1) } # Date action date_s { date_s = p } action date_e { received.date = chars(data, date_s, p-1).strip } # Time action time_s { time_s = p } action time_e { received.time = chars(data, time_s, p-1) } # No-op actions action address_s {} action address_e {} action angle_addr_s {} action ctime_date_s {} action ctime_date_e {} action comment_e {} action comment_s {} action phrase_s {} action phrase_e {} action domain_e {} action domain_s {} action local_dot_atom_e {} action local_dot_atom_pre_comment_e {} action local_dot_atom_pre_comment_s {} action local_dot_atom_s {} action qstr_e {} action qstr_s {} action local_quoted_string_s {} action local_quoted_string_e {} action obs_domain_list_s {} action obs_domain_list_e {} action group_name_s {} action group_name_e {} action msg_id_s {} action msg_id_e {} include rfc5322 "rfc5322.rl"; main := received; }%% module Mail::Parsers module ReceivedParser extend Mail::ParserTools ReceivedStruct = Struct.new(:date, :time, :info, :error) %%write data noprefix; def self.parse(data) data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding) raise Mail::Field::NilParseError.new(Mail::ReceivedElement) if data.nil? # Parser state received = ReceivedStruct.new received_tokens_s = date_s = time_s = nil # 5.1 Variables Used by Ragel p = 0 eof = pe = data.length stack = [] %%write init; %%write exec; if p != eof || cs < %%{ write first_final; }%% raise Mail::Field::IncompleteParseError.new(Mail::ReceivedElement, data, p) end received end end end ensure $VERBOSE = original_verbose end mail-2.8.1/lib/mail/parsers/rfc2045_content_transfer_encoding.rl000066400000000000000000000007461436372131700245610ustar00rootroot00000000000000%%{ # RFC 2045 Section 6.1: Content-Transfer-Encoding Header Field # https://tools.ietf.org/html/rfc2045#section-6.1 machine rfc2045_content_transfer_encoding; alphtype int; include rfc2045_content_type "rfc2045_content_type.rl"; encoding = ('7bits' | '8bits' | '7bit' | '8bit' | 'binary' | 'quoted-printable' | 'base64' | ietf_token | custom_x_token) >encoding_s %encoding_e; content_transfer_encoding = CFWS? encoding CFWS? ";"? CFWS?; }%% mail-2.8.1/lib/mail/parsers/rfc2045_content_type.rl000066400000000000000000000020741436372131700220440ustar00rootroot00000000000000%%{ # RFC 2045 Section 5.1: Content-Type Header Field # https://tools.ietf.org/html/rfc2045#section-5.1 # Previously: https://tools.ietf.org/html/rfc1049#section-3 machine rfc2045_content_type; alphtype int; include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl"; token = 0x21..0x27 | 0x2a..0x2b | 0x2c..0x2e | 0x30..0x39 | 0x41..0x5a | 0x5e..0x7e; value = (quoted_string | (token -- '"' | 0x3d)+) >param_val_s %param_val_e; attribute = (token+) >param_attr_s %param_attr_e; parameter = CFWS? attribute "=" value CFWS?; ietf_token = token+; custom_x_token = 'x'i "-" token+; extension_token = ietf_token | custom_x_token; discrete_type = 'text'i | 'image'i | 'audio'i | 'video'i | 'application'i | extension_token; composite_type = 'message'i | 'multipart'i | extension_token; iana_token = token+; main_type = (discrete_type | composite_type) >main_type_s %main_type_e; sub_type = (extension_token | iana_token) >sub_type_s %sub_type_e; content_type = main_type "/" sub_type (((CFWS? ";"+) | CFWS) parameter CFWS?)*; }%% mail-2.8.1/lib/mail/parsers/rfc2045_mime.rl000066400000000000000000000006631436372131700202620ustar00rootroot00000000000000%%{ # RFC 2045 MIME # https://tools.ietf.org/html/rfc2045 machine rfc2045_mime; alphtype int; include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl"; # 4. MIME-Version Header Field # https://tools.ietf.org/html/rfc2045#section-4 mime_version = CFWS? (DIGIT+ >major_digits_s %major_digits_e) comment? "." comment? (DIGIT+ >minor_digits_s %minor_digits_e) CFWS?; }%% mail-2.8.1/lib/mail/parsers/rfc2183_content_disposition.rl000066400000000000000000000007431436372131700234330ustar00rootroot00000000000000%%{ # RFC 2183 The Content-Disposition Header Field # https://tools.ietf.org/html/rfc2183#section-2 # # TODO: recognize filename, size, creation date, etc. machine rfc2183_content_disposition; alphtype int; include rfc2045_content_type "rfc2045_content_type.rl"; disposition_type = 'inline'i | 'attachment'i | extension_token; disposition_parm = parameter; disposition = (disposition_type >disp_type_s %disp_type_e) (";" disposition_parm)*; }%% mail-2.8.1/lib/mail/parsers/rfc3629_utf8.rl000066400000000000000000000012071436372131700202250ustar00rootroot00000000000000%%{ # RFC 3629 4. Syntax of UTF-8 Byte Sequences # https://tools.ietf.org/html/rfc3629#section-4 machine rfc3629_utf8; alphtype int; utf8_tail = 0x80..0xBF; utf8_2byte = 0xC2..0xDF utf8_tail; utf8_3byte = 0xE0 0xA0..0xBF utf8_tail | 0xE1..0xEC utf8_tail utf8_tail | 0xED 0x80..0x9F utf8_tail | 0xEE..0xEF utf8_tail utf8_tail; utf8_4byte = 0xF0 0x90..0xBF utf8_tail utf8_tail | 0xF1..0xF3 utf8_tail utf8_tail utf8_tail | 0xF4 0x80..0x8F utf8_tail utf8_tail; utf8_non_ascii = utf8_2byte | utf8_3byte | utf8_4byte; }%% mail-2.8.1/lib/mail/parsers/rfc5234_abnf_core_rules.rl000066400000000000000000000006701436372131700224640ustar00rootroot00000000000000%%{ # RFC 5234 B.1. Core Rules # https://tools.ietf.org/html/rfc5234#appendix-B.1 machine rfc5234_abnf_core_rules; alphtype int; include rfc3629_utf8 "rfc3629_utf8.rl"; LF = "\n"; CR = "\r"; CRLF = "\r\n"; SP = " "; HTAB = "\t"; WSP = SP | HTAB; DQUOTE = '"'; DIGIT = [0-9]; ALPHA = [a-zA-Z]; # RFC6532 extension for UTF-8 content rfc5234_VCHAR = 0x21..0x7e; VCHAR = rfc5234_VCHAR | utf8_non_ascii; }%% mail-2.8.1/lib/mail/parsers/rfc5322.rl000066400000000000000000000047511436372131700172560ustar00rootroot00000000000000%%{ # RFC 5322 Internet Message Format # https://tools.ietf.org/html/rfc5322 # # RFC 6854 Update to Internet Message Format to Allow Group Syntax in the "From:" and "Sender:" Header Fields # https://tools.ietf.org/html/rfc6854 machine rfc5322; alphtype int; include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl"; # 3.2. Lexical Tokens include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl"; # 3.3. Date and Time Specification include rfc5322_date_time "rfc5322_date_time.rl"; # 3.4. Address Specification include rfc5322_address "rfc5322_address.rl"; # 3.5. Overall Message Syntax #rfc5322_text = 0x01..0x09 | "\v" | "\f" | 0x0e..0x1f; #text = rfc5322_text | utf8_non_ascii; # RFC6532 for UTF-8 #obs_body = ((LF* CR* ((0x00 | text) LF* CR*)*) | CRLF)* #body = ((text{,998} CRLF)* text{,998}) | obs_body; #message = (fields | obs_fields) (CRLF body)?; # 3.6. Field Definitions # 3.6.4. Identification Fields obs_id_left = local_part; obs_id_right = domain; no_fold_literal = "[" (dtext)* "]"; msg_id_atext = rfc5322_atext | ":" | "," | "." | " "; id_left = msg_id_atext+ | obs_id_left; id_left_ns = ( msg_id_atext - ( " " | "," ) )+; # id_right modifications to support multiple '@' in msg_id. id_right = ( msg_id_atext | "@" )+ | no_fold_literal | obs_id_right; id_right_ns = ( msg_id_atext - ( " " | "," ) | "@" )+ | no_fold_literal; # Handle various message-id formats: # # # # ") >msg_id_s %msg_id_e) | (("<" id_left "@" id_right? :>> "...") >msg_id_s %msg_id_e) | (("<" id_left ">") >msg_id_s %msg_id_e) | (("<" id_left :>> "..." ) >msg_id_s %msg_id_e) | ((id_left_ns ("@" id_right_ns)? ) >msg_id_s %msg_id_e) ) (CFWS)? <: ","?; message_ids = msg_id**; # 3.6.7 Trace Fields # Added CFWS? to increase robustness (qmail likes to include a comment) received_token = word | angle_addr | addr_spec_no_angle_brackets | domain; received = ((CFWS? received_token*) >received_tokens_s %received_tokens_e) ";" date_time; # Envelope From ctime_date = day_name " "+ month " "+ day " " time_of_day " " year; null_sender = ('<>' ' '{0,1}); envelope_from = (addr_spec_no_angle_brackets | null_sender) >address_s %address_e (" " (ctime_date >ctime_date_s %ctime_date_e))?; }%% mail-2.8.1/lib/mail/parsers/rfc5322_address.rl000066400000000000000000000056601436372131700207630ustar00rootroot00000000000000%%{ # RFC 5322 Internet Message Format # Section 3.4. Address Specification # https://tools.ietf.org/html/rfc5322#section-3.4 machine rfc5322_address; alphtype int; include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl"; include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl"; # local_part: domain_text = (DQUOTE (FWS? qcontent)+ FWS? DQUOTE) | atext+; local_dot_atom_text = ("."* domain_text "."*)+; local_dot_atom = CFWS? (local_dot_atom_text >local_dot_atom_s %local_dot_atom_pre_comment_e) CFWS?; obs_local_part = word ("." word)*; local_part = (local_dot_atom >local_dot_atom_s %local_dot_atom_e | (quoted_string %local_quoted_string_e) | obs_local_part); # Treetop parser behavior was to ignore addresses missing '@' inside of angle # brackets. This construction preserves that behavior. local_part_no_capture = (local_dot_atom | quoted_string | obs_local_part); # domain: domain_dot_atom_text = "."* domain_text ("."* domain_text)*; obs_dtext = obs_NO_WS_CTL | quoted_pair; rfc5322_dtext = 0x21..0x5a | 0x5e..0x7e | obs_dtext; dtext = rfc5322_dtext | utf8_non_ascii; # RFC6532 for UTF-8 domain_dot_atom = CFWS? domain_dot_atom_text (CFWS? >(comment_after_address,1)); domain_literal = CFWS? "[" (FWS? dtext)* FWS? "]" CFWS?; obs_domain = atom ("." atom)*; domain = (domain_dot_atom | domain_literal | obs_domain) >domain_s %domain_e; # 3.4.1. Addr-Spec Specification # The %(end_addr,N) priority resolves uncertainty when whitespace # after an addr_spec could cause it to be interpreted as a # display name: "bar@example.com ,..." addr_spec_in_angle_brackets = (local_part "@" domain) %(end_addr,1) | local_part_no_capture %(end_addr,0); addr_spec_no_angle_brackets = (local_part "@" domain) %(end_addr,1) | local_part %(end_addr,0); # angle_addr: obs_domain_list = (CFWS | ",")* "@" domain ("," CFWS? ("@" domain)?)*; obs_route = (obs_domain_list ":") >obs_domain_list_s %obs_domain_list_e; obs_angle_addr = CFWS? "<" obs_route? addr_spec_in_angle_brackets ">" CFWS?; angle_addr = CFWS? ("<" >angle_addr_s) addr_spec_in_angle_brackets ">" CFWS? | obs_angle_addr; # 3.4. Address Specification display_name = phrase; name_addr = display_name? %(end_addr,2) angle_addr; mailbox = (name_addr | addr_spec_no_angle_brackets) >address_s %address_e; obs_mbox_list = (CFWS? ",")* mailbox ("," (mailbox | CFWS)?)*; mailbox_list = (mailbox (("," | ";") mailbox)*) | obs_mbox_list; obs_group_list = (CFWS? ",")+ CFWS?; group_list = mailbox_list | CFWS | obs_group_list; group = (display_name >group_name_s %group_name_e) ":" (group_list?) ";" CFWS?; address = group | mailbox; #obs_addr_list = (CFWS? ",")* address ("," (address | CFWS)?)*; address_lists = address? %(comment_after_address,0) (FWS* ("," | ";") FWS* address?)*; }%% mail-2.8.1/lib/mail/parsers/rfc5322_date_time.rl000066400000000000000000000025531436372131700212670ustar00rootroot00000000000000%%{ # RFC 5322 Internet Message Format # Section 3.3. Date and Time Specification # https://tools.ietf.org/html/rfc5322#section-3.3 machine rfc5322_date_time; alphtype int; include rfc5322_lexical_tokens "rfc5322_lexical_tokens.rl"; # day_of_week day_name = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun"; obs_day_of_week = CFWS? day_name CFWS?; day_of_week = (FWS? day_name) | obs_day_of_week; # date obs_day = CFWS? (DIGIT | (DIGIT DIGIT)) CFWS?; day = (FWS? DIGIT DIGIT? FWS) | obs_day; month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"; obs_year = CFWS? (DIGIT DIGIT DIGIT*) CFWS?; year = FWS DIGIT DIGIT DIGIT DIGIT FWS | obs_year; date = day month year; # time obs_hour = CFWS? (DIGIT DIGIT) CFWS?; hour = DIGIT DIGIT | obs_hour; obs_minute = CFWS? (DIGIT DIGIT) CFWS?; minute = DIGIT DIGIT | obs_minute; obs_second = CFWS? (DIGIT DIGIT) CFWS?; second = DIGIT DIGIT | obs_second; obs_zone = "UT" | "GMT" | "EST" | "EDT" | "CST" | "CDT" | "MST" | "MDT" | "PST" | "PDT" | 0x41..0x49 | 0x4B..0x5A | 0x61..0x69 | 0x6B..0x7A; time_of_day = hour ":" minute (":" second)?; zone = FWS ((("+" | "-") DIGIT DIGIT DIGIT DIGIT) | obs_zone); time = time_of_day zone; date_time = (day_of_week ",")? (date >date_s %date_e) <: (time >time_s %time_e) CFWS?; }%% mail-2.8.1/lib/mail/parsers/rfc5322_lexical_tokens.rl000066400000000000000000000037731436372131700223450ustar00rootroot00000000000000%%{ # RFC 5322 Internet Message Format # Section 3.2. Lexical Tokens # https://tools.ietf.org/html/rfc5322#section-3.2 machine rfc5322_lexical_tokens; alphtype int; include rfc5234_abnf_core_rules "rfc5234_abnf_core_rules.rl"; # 3.2.1. Quoted characters obs_NO_WS_CTL = 0x01..0x08 | "\v" | "\f" | 0x0e..0x1f | 0x7f; obs_qp = "\\" (0x00 | obs_NO_WS_CTL | LF | CR); quoted_pair = ("\\" (VCHAR | WSP)) | obs_qp; # 3.2.2. Folding White Space and Comments obs_FWS = (CRLF? WSP)+; FWS = (WSP* CRLF WSP+) | (CRLF WSP+) | obs_FWS; obs_ctext = obs_NO_WS_CTL; rfc5322_ctext = 0x21..0x27 | 0x2a..0x5b | 0x5d..0x7e | obs_ctext; ctext = rfc5322_ctext | utf8_non_ascii; # RFC6532 for UTF-8 # Recursive comments action comment_begin { fcall comment_tail; } action comment_exit { fret; } ccontent = ctext | quoted_pair | "(" @comment_begin; comment_tail := ((FWS? ccontent)* >comment_s) FWS? ")" @comment_exit; comment = "(" @comment_begin %comment_e; CFWS = ((FWS? comment)+ FWS?) | FWS; # 3.2.3. Atom rfc5322_atext = ALPHA | DIGIT | "!" | "#" | "$" | "%" | "&" | "'" | "*" | "+" | "-" | "/" | "=" | "?" | "^" | "_" | "`" | "{" | "|" | "}" | "~"; atext = rfc5322_atext | utf8_non_ascii; # RFC6532 for UTF-8 atom = CFWS? atext+ CFWS?; dot_atom_text = atext ("." atext)*; dot_atom = CFWS? dot_atom_text CFWS?; # 3.2.4. Quoted Strings obs_qtext = obs_NO_WS_CTL; rfc5322_qtext = 0x21 | 0x23..0x5b | 0x5d..0x7e | obs_qtext; qtext = rfc5322_qtext | utf8_non_ascii; # RFC6532 for UTF-8 qcontent = qtext | quoted_pair; quoted_string = CFWS? (DQUOTE (((FWS? qcontent)* FWS?) >qstr_s %qstr_e) DQUOTE) CFWS?; # 3.2.5. Miscellaneous Tokens word = atom | quoted_string; obs_phrase = (word | "." | "@")+; phrase = (obs_phrase | word+) >phrase_s %phrase_e; # Not part of RFC, used for keywords per 3.6.5 Information Fields phrase_lists = phrase ("," FWS* phrase)*; }%% mail-2.8.1/lib/mail/part.rb000066400000000000000000000060641436372131700154440ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' require 'mail/utilities' module Mail class Part < Message # Creates a new empty Content-ID field and inserts it in the correct order # into the Header. The ContentIdField object will automatically generate # a unique content ID if you try and encode it or output it to_s without # specifying a content id. # # It will preserve the content ID you specify if you do. def add_content_id(content_id_val = '') header['content-id'] = content_id_val end # Returns true if the part has a content ID field, the field may or may # not have a value, but the field exists or not. def has_content_id? header.has_content_id? end def cid add_content_id unless has_content_id? Utilities.uri_escape(Utilities.unbracket(content_id)) end def url "cid:#{cid}" end def inline? header[:content_disposition].disposition_type == 'inline' if header[:content_disposition].respond_to?(:disposition_type) end def add_required_fields super add_content_id if !has_content_id? && inline? end def add_required_message_fields # Override so we don't add Date, MIME-Version, or Message-ID. end def delivery_status_report_part? (main_type =~ /message/i && sub_type =~ /delivery-status/i) && body =~ /Status:/ end def delivery_status_data delivery_status_report_part? ? parse_delivery_status_report : {} end def bounced? if action.is_a?(Array) !!(action.first =~ /failed/i) else !!(action =~ /failed/i) end end # Either returns the action if the message has just a single report, or an # array of all the actions, one for each report def action get_return_values('action') end def final_recipient get_return_values('final-recipient') end def error_status get_return_values('status') end def diagnostic_code get_return_values('diagnostic-code') end def remote_mta get_return_values('remote-mta') end def retryable? !(error_status =~ /^5/) end private def get_return_values(key) if delivery_status_data[key].is_a?(Array) delivery_status_data[key].map { |a| a.value } elsif !delivery_status_data[key].nil? delivery_status_data[key].value else nil end end # A part may not have a header.... so, just init a body if no header def parse_message header_part, body_part = raw_source.split(/#{Constants::LAX_CRLF}#{Constants::WSP}*#{Constants::LAX_CRLF}/m, 2) if header_part =~ Constants::HEADER_LINE self.header = header_part self.body = body_part else self.header = "Content-Type: text/plain\r\n" self.body = raw_source end end def parse_delivery_status_report @delivery_status_data ||= Header.new(body.to_s.gsub("\r\n\r\n", "\r\n")) end end end mail-2.8.1/lib/mail/parts_list.rb000066400000000000000000000064561436372131700166670ustar00rootroot00000000000000# frozen_string_literal: true require 'delegate' module Mail class PartsList < DelegateClass(Array) attr_reader :parts def initialize(*args) @parts = Array.new(*args) super @parts end # The #encode_with and #to_yaml methods are just implemented # for the sake of backward compatibility ; the delegator does # not correctly delegate these calls to the delegated object def encode_with(coder) # :nodoc: coder.represent_object(nil, @parts) end def to_yaml(options = {}) # :nodoc: @parts.to_yaml(options) end def attachments Mail::AttachmentsList.new(@parts) end def collect if block_given? ary = PartsList.new each { |o| ary << yield(o) } ary else to_a end end alias_method :map, :collect def map! raise NoMethodError, "#map! is not defined, please call #collect and create a new PartsList" end def collect! raise NoMethodError, "#collect! is not defined, please call #collect and create a new PartsList" end def inspect_structure(parent_id = '') enum_for(:map).with_index { |part, i| i = i + 1 # Use 1-based indexes since this is for humans to read id = parent_id.empty? ? "#{i}" : "#{parent_id}.#{i}" if part.content_type == "message/rfc822" sub_list = Mail.new(part.body).parts else sub_list = part.parts end id + '. ' + part.inspect + if sub_list.any? "\n" + sub_list.inspect_structure(id) end.to_s }.join("\n") end def recursive_each(&block) each do |part| if part.content_type == "message/rfc822" sub_list = Mail.new(part.body).parts else sub_list = part.parts end yield part sub_list.recursive_each(&block) end end def recursive_size i = 0 recursive_each {|p| i += 1 } i end def recursive_delete_if delete_if { |part| if part.content_type == "message/rfc822" sub_list = Mail.new(part.body).parts else sub_list = part.parts end (yield part).tap { if sub_list.any? sub_list.recursive_delete_if {|part| yield part } end } } end def delete_attachments recursive_delete_if { |part| part.attachment? } end def sort self.class.new(@parts.sort) end def sort!(order) # stable sort should be used to maintain the relative order as the parts are added i = 0; sorted = @parts.sort_by do |a| # OK, 10000 is arbitrary... if anyone actually wants to explicitly sort 10000 parts of a # single email message... please show me a use case and I'll put more work into this method, # in the meantime, it works :) get_order_value(a, order) << (i += 1) end @parts.clear sorted.each { |p| @parts << p } end private def get_order_value(part, order) is_attachment = part.respond_to?(:attachment?) && part.attachment? has_content_type = part.respond_to?(:content_type) && !part[:content_type].nil? [is_attachment ? 1 : 0, (has_content_type ? order.index(part[:content_type].string.downcase) : nil) || 10000] end end end mail-2.8.1/lib/mail/smtp_envelope.rb000066400000000000000000000026021436372131700173500ustar00rootroot00000000000000# frozen_string_literal: true module Mail class SmtpEnvelope #:nodoc: # Reasonable cap on address length to avoid SMTP line length # overflow on old SMTP servers. MAX_ADDRESS_BYTESIZE = 2000 attr_reader :from, :to, :message def initialize(mail) self.from = mail.smtp_envelope_from self.to = mail.smtp_envelope_to self.message = mail.encoded end def from=(addr) if Utilities.blank? addr raise ArgumentError, "SMTP From address may not be blank: #{addr.inspect}" end @from = validate_addr 'From', addr end def to=(addr) if Utilities.blank?(addr) raise ArgumentError, "SMTP To address may not be blank: #{addr.inspect}" end @to = Array(addr).map do |addr| validate_addr 'To', addr end end def message=(message) if Utilities.blank?(message) raise ArgumentError, 'SMTP message may not be blank' end @message = message end private def validate_addr(addr_name, addr) if addr.bytesize > MAX_ADDRESS_BYTESIZE raise ArgumentError, "SMTP #{addr_name} address may not exceed #{MAX_ADDRESS_BYTESIZE} bytes: #{addr.inspect}" end if /[\r\n]/ =~ addr raise ArgumentError, "SMTP #{addr_name} address may not contain CR or LF line breaks: #{addr.inspect}" end addr end end end mail-2.8.1/lib/mail/utilities.rb000066400000000000000000000374601436372131700165150ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'mail/constants' require 'socket' module Mail module Utilities extend self # Returns true if the string supplied is free from characters not allowed as an ATOM def atom_safe?( str ) not Constants::ATOM_UNSAFE === str end # If the string supplied has ATOM unsafe characters in it, will return the string quoted # in double quotes, otherwise returns the string unmodified def quote_atom( str ) atom_safe?( str ) ? str : dquote(str) end # If the string supplied has PHRASE unsafe characters in it, will return the string quoted # in double quotes, otherwise returns the string unmodified def quote_phrase( str ) if str.respond_to?(:force_encoding) original_encoding = str.encoding ascii_str = str.to_s.dup.force_encoding('ASCII-8BIT') if Constants::PHRASE_UNSAFE === ascii_str dquote(ascii_str).force_encoding(original_encoding) else str end else Constants::PHRASE_UNSAFE === str ? dquote(str) : str end end # Returns true if the string supplied is free from characters not allowed as a TOKEN def token_safe?( str ) not Constants::TOKEN_UNSAFE === str end # If the string supplied has TOKEN unsafe characters in it, will return the string quoted # in double quotes, otherwise returns the string unmodified def quote_token( str ) if str.respond_to?(:force_encoding) original_encoding = str.encoding ascii_str = str.to_s.dup.force_encoding('ASCII-8BIT') if token_safe?( ascii_str ) str else dquote(ascii_str).force_encoding(original_encoding) end else token_safe?( str ) ? str : dquote(str) end end # Wraps supplied string in double quotes and applies \-escaping as necessary, # unless it is already wrapped. # # Example: # # string = 'This is a string' # dquote(string) #=> '"This is a string"' # # string = 'This is "a string"' # dquote(string #=> '"This is \"a string\"' def dquote( str ) '"' + unquote(str).gsub(/[\\"]/n) {|s| '\\' + s } + '"' end # Unwraps supplied string from inside double quotes and # removes any \-escaping. # # Example: # # string = '"This is a string"' # unquote(string) #=> 'This is a string' # # string = '"This is \"a string\""' # unqoute(string) #=> 'This is "a string"' def unquote( str ) if str =~ /^"(.*?)"$/ unescape($1) else str end end # Removes any \-escaping. # # Example: # # string = 'This is \"a string\"' # unescape(string) #=> 'This is "a string"' # # string = '"This is \"a string\""' # unescape(string) #=> '"This is "a string""' def unescape( str ) str.gsub(/\\(.)/, '\1') end # Wraps a string in parenthesis and escapes any that are in the string itself. # # Example: # # paren( 'This is a string' ) #=> '(This is a string)' def paren( str ) Utilities.paren( str ) end # Unwraps a string from being wrapped in parenthesis # # Example: # # str = '(This is a string)' # unparen( str ) #=> 'This is a string' def unparen( str ) if str.start_with?('(') && str.end_with?(')') str.slice(1..-2) else str end end # Wraps a string in angle brackets and escapes any that are in the string itself # # Example: # # bracket( 'This is a string' ) #=> '' def bracket( str ) Utilities.bracket( str ) end # Unwraps a string from being wrapped in parenthesis # # Example: # # str = '' # unbracket( str ) #=> 'This is a string' def unbracket( str ) if str.start_with?('<') && str.end_with?('>') str.slice(1..-2) else str end end # Escape parenthesies in a string # # Example: # # str = 'This is (a) string' # escape_paren( str ) #=> 'This is \(a\) string' def escape_paren( str ) Utilities.escape_paren( str ) end def uri_escape( str ) uri_parser.escape(str) end def uri_unescape( str ) uri_parser.unescape(str) end def uri_parser @uri_parser ||= URI.const_defined?(:DEFAULT_PARSER) ? URI::DEFAULT_PARSER : URI end # Matches two objects with their to_s values case insensitively # # Example: # # obj2 = "This_is_An_object" # obj1 = :this_IS_an_object # match_to_s( obj1, obj2 ) #=> true def match_to_s( obj1, obj2 ) obj1.to_s.casecmp(obj2.to_s) == 0 end # Capitalizes a string that is joined by hyphens correctly. # # Example: # # string = 'resent-from-field' # capitalize_field( string ) #=> 'Resent-From-Field' def capitalize_field( str ) str.to_s.split("-").map { |v| v.capitalize }.join("-") end # Takes an underscored word and turns it into a class name # # Example: # # constantize("hello") #=> "Hello" # constantize("hello-there") #=> "HelloThere" # constantize("hello-there-mate") #=> "HelloThereMate" def constantize( str ) str.to_s.split(/[-_]/).map { |v| v.capitalize }.to_s end # Swaps out all underscores (_) for hyphens (-) good for stringing from symbols # a field name. # # Example: # # string = :resent_from_field # dasherize( string ) #=> 'resent-from-field' def dasherize( str ) str.to_s.tr(Constants::UNDERSCORE, Constants::HYPHEN) end # Swaps out all hyphens (-) for underscores (_) good for stringing to symbols # a field name. # # Example: # # string = :resent_from_field # underscoreize ( string ) #=> 'resent_from_field' def underscoreize( str ) str.to_s.downcase.tr(Constants::HYPHEN, Constants::UNDERSCORE) end def map_lines( str, &block ) str.each_line.map(&block) end def map_with_index( enum, &block ) enum.each_with_index.map(&block) end def self.binary_unsafe_to_lf(string) #:nodoc: string.gsub(/\r\n|\r/, Constants::LF) end TO_CRLF_REGEX = # This 1.9 only regex can save a reasonable amount of time (~20%) # by not matching "\r\n" so the string is returned unchanged in # the common case. Regexp.new("(?" end class StrictCharsetEncoder def encode(string, charset) case charset when /utf-?7/i Mail::Utilities.decode_utf7(string) else string.force_encoding(Mail::Utilities.pick_encoding(charset)) end end end class BestEffortCharsetEncoder def encode(string, charset) case charset when /utf-?7/i Mail::Utilities.decode_utf7(string) else string.force_encoding(pick_encoding(charset)) end end private def pick_encoding(charset) charset = case charset when /ansi_x3.110-1983/ 'ISO-8859-1' when /Windows-?1258/i # Windows-1258 is similar to 1252 "Windows-1252" else charset end Mail::Utilities.pick_encoding(charset) end end class << self attr_accessor :charset_encoder end self.charset_encoder = BestEffortCharsetEncoder.new # Escapes any parenthesis in a string that are unescaped this uses # a Ruby 1.9.1 regexp feature of negative look behind def Utilities.escape_paren( str ) re = /(?])/ # Only match unescaped brackets str.gsub(re) { |s| '\\' + s } end def Utilities.bracket( str ) str = ::Mail::Utilities.unbracket( str ) str = escape_bracket( str ) '<' + str + '>' end def Utilities.decode_base64(str) if !str.end_with?("=") && str.length % 4 != 0 str = str.ljust((str.length + 3) & ~3, "=") end str.unpack( 'm' ).first end def Utilities.encode_base64(str) [str].pack( 'm' ) end def Utilities.has_constant?(klass, string) klass.const_defined?( string, false ) end def Utilities.get_constant(klass, string) klass.const_get( string ) end def Utilities.transcode_charset(str, from_encoding, to_encoding = Encoding::UTF_8) to_encoding = Encoding.find(to_encoding) replacement_char = to_encoding == Encoding::UTF_8 ? '�' : '?' charset_encoder.encode(str.dup, from_encoding).encode(to_encoding, :undef => :replace, :invalid => :replace, :replace => replacement_char) end # From Ruby stdlib Net::IMAP def Utilities.encode_utf7(string) string.gsub(/(&)|[^\x20-\x7e]+/) do if $1 "&-" else base64 = [$&.encode(Encoding::UTF_16BE)].pack("m0") "&" + base64.delete("=").tr("/", ",") + "-" end end.force_encoding(Encoding::ASCII_8BIT) end def Utilities.decode_utf7(utf7) utf7.gsub(/&([^-]+)?-/n) do if $1 ($1.tr(",", "/") + "===").unpack("m")[0].encode(Encoding::UTF_8, Encoding::UTF_16BE) else "&" end end end def Utilities.b_value_encode(str, encoding = nil) encoding = str.encoding.to_s [Utilities.encode_base64(str), encoding] end def Utilities.b_value_decode(str) match = str.match(/\=\?(.+)?\?[Bb]\?(.*)\?\=/m) if match charset = match[1] str = Utilities.decode_base64(match[2]) str = charset_encoder.encode(str, charset) end transcode_to_scrubbed_utf8(str) rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError, Encoding::InvalidByteSequenceError warn "Encoding conversion failed #{$!}" str.dup.force_encoding(Encoding::UTF_8) end def Utilities.q_value_encode(str, encoding = nil) encoding = str.encoding.to_s [Encodings::QuotedPrintable.encode(str), encoding] end def Utilities.q_value_decode(str) match = str.match(/\=\?(.+)?\?[Qq]\?(.*)\?\=/m) if match charset = match[1] string = match[2].gsub(/_/, '=20') # Remove trailing = if it exists in a Q encoding string = string.sub(/\=$/, '') str = Encodings::QuotedPrintable.decode(string) str = charset_encoder.encode(str, charset) # We assume that binary strings hold utf-8 directly to work around # jruby/jruby#829 which subtly changes String#encode semantics. str.force_encoding(Encoding::UTF_8) if str.encoding == Encoding::ASCII_8BIT end transcode_to_scrubbed_utf8(str) rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError warn "Encoding conversion failed #{$!}" str.dup.force_encoding(Encoding::UTF_8) end def Utilities.param_decode(str, encoding) str = uri_parser.unescape(str) str = charset_encoder.encode(str, encoding) if encoding transcode_to_scrubbed_utf8(str) rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError warn "Encoding conversion failed #{$!}" str.dup.force_encoding(Encoding::UTF_8) end def Utilities.param_encode(str) encoding = str.encoding.to_s.downcase language = Configuration.instance.param_encode_language "#{encoding}'#{language}'#{uri_parser.escape(str)}" end def Utilities.uri_parser URI::DEFAULT_PARSER end # Pick a Ruby encoding corresponding to the message charset. Most # charsets have a Ruby encoding, but some need manual aliasing here. # # TODO: add this as a test somewhere: # Encoding.list.map { |e| [e.to_s.upcase == pick_encoding(e.to_s.downcase.gsub("-", "")), e.to_s] }.select {|a,b| !b} # Encoding.list.map { |e| [e.to_s == pick_encoding(e.to_s), e.to_s] }.select {|a,b| !b} def Utilities.pick_encoding(charset) charset = charset.to_s encoding = case charset.downcase # ISO-8859-8-I etc. http://en.wikipedia.org/wiki/ISO-8859-8-I when /^iso[-_]?8859-(\d+)(-i)?$/ "ISO-8859-#{$1}" # ISO-8859-15, ISO-2022-JP and alike when /^iso[-_]?(\d{4})-?(\w{1,2})$/ "ISO-#{$1}-#{$2}" # "ISO-2022-JP-KDDI" and alike when /^iso[-_]?(\d{4})-?(\w{1,2})-?(\w*)$/ "ISO-#{$1}-#{$2}-#{$3}" # UTF-8, UTF-32BE and alike when /^utf[\-_]?(\d{1,2})?(\w{1,2})$/ "UTF-#{$1}#{$2}".gsub(/\A(UTF-(?:16|32))\z/, '\\1BE') # Windows-1252 and alike when /^windows-?(.*)$/ "Windows-#{$1}" when '8bit' Encoding::ASCII_8BIT # alternatives/misspellings of us-ascii seen in the wild when /^iso[-_]?646(-us)?$/, 'us=ascii' Encoding::ASCII # Microsoft-specific alias for MACROMAN when 'macintosh' Encoding::MACROMAN # Microsoft-specific alias for CP949 (Korean) when 'ks_c_5601-1987' Encoding::CP949 # Wrongly written Shift_JIS (Japanese) when 'shift-jis' Encoding::Shift_JIS # GB2312 (Chinese charset) is a subset of GB18030 (its replacement) when 'gb2312' Encoding::GB18030 when 'cp-850' Encoding::CP850 when 'latin2' Encoding::ISO_8859_2 else charset end convert_to_encoding(encoding) end def Utilities.string_byteslice(str, *args) str.byteslice(*args) end class << self private def convert_to_encoding(encoding) if encoding.is_a?(Encoding) encoding else # Fall back to ASCII for charsets that Ruby doesn't recognize begin Encoding.find(encoding) rescue ArgumentError Encoding::BINARY end end end def transcode_to_scrubbed_utf8(str) decoded = str.encode(Encoding::UTF_8, :undef => :replace, :invalid => :replace, :replace => "�") decoded.valid_encoding? ? decoded : decoded.encode(Encoding::UTF_16LE, :invalid => :replace, :replace => "�").encode(Encoding::UTF_8) end end end end mail-2.8.1/lib/mail/values/000077500000000000000000000000001436372131700154425ustar00rootroot00000000000000mail-2.8.1/lib/mail/values/unicode_tables.dat000066400000000000000000036445051436372131700211350ustar00rootroot00000000000000[ }jio:(Mail::Multibyte::Unicode::Codepoint :@combining_classi:@uppercase_mappingi:@lowercase_mappingi: @codei:@decomp_type0:@decomp_mapping0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;if; iF; 0; 0iGo; ;i;i;ig; iG; 0; 0iHo; ;i;i;ih; iH; 0; 0iIo; ;i;i;ii; iI; 0; 0iJo; ;i;i;ij; iJ; 0; 0iKo; ;i;i;ik; iK; 0; 0iLo; ;i;i;il; iL; 0; 0iMo; ;i;i;im; iM; 0; 0iNo; ;i;i;in; iN; 0; 0iOo; ;i;i;io; iO; 0; 0iPo; ;i;i;ip; iP; 0; 0iQo; ;i;i;iq; iQ; 0; 0iRo; ;i;i;ir; iR; 0; 0iSo; ;i;i;is; iS; 0; 0iTo; ;i;i;it; iT; 0; 0iUo; ;i;i;iu; iU; 0; 0iVo; ;i;i;iv; iV; 0; 0iWo; ;i;i;iw; iW; 0; 0iXo; ;i;i;ix; iX; 0; 0iYo; ;i;i;iy; iY; 0; 0iZo; ;i;i;iz; iZ; 0; 0i[o; ;i;i;i{; i[; 0; 0i\o; ;i;i;i|; i\; 0; 0i]o; ;i;i;i}; i]; 0; 0i^o; ;i;i;i~; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;iF;i; if; 0; 0igo; ;i;iG;i; ig; 0; 0iho; ;i;iH;i; ih; 0; 0iio; ;i;iI;i; ii; 0; 0ijo; ;i;iJ;i; ij; 0; 0iko; ;i;iK;i; ik; 0; 0ilo; ;i;iL;i; il; 0; 0imo; ;i;iM;i; im; 0; 0ino; ;i;iN;i; in; 0; 0ioo; ;i;iO;i; io; 0; 0ipo; ;i;iP;i; ip; 0; 0iqo; ;i;iQ;i; iq; 0; 0iro; ;i;iR;i; ir; 0; 0iso; ;i;iS;i; is; 0; 0ito; ;i;iT;i; it; 0; 0iuo; ;i;iU;i; iu; 0; 0ivo; ;i;iV;i; iv; 0; 0iwo; ;i;iW;i; iw; 0; 0ixo; ;i;iX;i; ix; 0; 0iyo; ;i;iY;i; iy; 0; 0izo; ;i;iZ;i; iz; 0; 0i{o; ;i;i[;i; i{; 0; 0i|o; ;i;i\;i; i|; 0; 0i}o; ;i;i];i; i}; 0; 0i~o; ;i;i^;i; i~; 0; 0io; ;i;i_;i; i; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" noBreak:ET; [i%io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [ifio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [i7io; ;i;i;i; i; I" super; T; [i8io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i%i'io; ;i;i;i; i; I" super; T; [i6io; ;i;i;i; i; I" super; T; [itio; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" fraction; T; [i6iD i9io; ;i;i;i; i; I" fraction; T; [i6iD i7io; ;i;i;i; i; I" fraction; T; [i8iD i9io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [iFi io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iHi'io; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [iNiio; ;i;i;i; i; 0; [iNiio; ;i;i;i; i; 0; [iNiio; ;i;i;i; i; 0; [iNiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iSiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [i^iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [ifi io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [ihi'io; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iniio; ;i;i;i; i; 0; [iniio; ;i;i;i; i; 0; [iniio; ;i;i;i; i; 0; [iniio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [isiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [i~iio; ;i;i;i; i; 0; 0io; ;i;ix;i; i; 0; [i~iio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [iFi(io; ;i;i;i; i; 0; [ifi(io; ;i;i;i; i; 0; [iHiio; ;i;i;i; i; 0; [ihiio; ;i;i;i ; i; 0; [iHii o; ;i;i;i; i ; 0; [ihii o; ;i;i;i ; i ; 0; [iHii o; ;i;i ;i; i ; 0; [ihii o; ;i;i;i ; i ; 0; [iHi i o; ;i;i ;i; i ; 0; [ihi io; ;i;i;i; i; 0; [iIi io; ;i;i;i; i; 0; [iii io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iJi(io; ;i;i;i; i; 0; [iji(io; ;i;i;i; i; 0; [iJi io; ;i;i;i; i; 0; [iji io; ;i;i;i; i; 0; [iLiio; ;i;i;i; i; 0; [iliio; ;i;i;i; i; 0; [iLiio; ;i;i;i; i; 0; [ilii o; ;i;i;i!; i ; 0; [iLii!o; ;i;i ;i; i!; 0; [ilii"o; ;i;i;i#; i"; 0; [iLi'i#o; ;i;i";i; i#; 0; [ili'i$o; ;i;i;i%; i$; 0; [iMii%o; ;i;i$;i; i%; 0; [imii&o; ;i;i;i'; i&; 0; 0i'o; ;i;i&;i; i'; 0; 0i(o; ;i;i;i); i(; 0; [iNii)o; ;i;i(;i; i); 0; [inii*o; ;i;i;i+; i*; 0; [iNii+o; ;i;i*;i; i+; 0; [inii,o; ;i;i;i-; i,; 0; [iNii-o; ;i;i,;i; i-; 0; [inii.o; ;i;i;i/; i.; 0; [iNi(i/o; ;i;i.;i; i/; 0; [ini(i0o; ;i;i;in; i0; 0; [iNii1o; ;i;iN;i; i1; 0; 0i2o; ;i;i;i3; i2; I" compat; T; [iNiOi3o; ;i;i2;i; i3; I" compat; T; [inioi4o; ;i;i;i5; i4; 0; [iOii5o; ;i;i4;i; i5; 0; [ioii6o; ;i;i;i7; i6; 0; [iPi'i7o; ;i;i6;i; i7; 0; [ipi'i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i:; i9; 0; [iQii:o; ;i;i9;i; i:; 0; [iqii;o; ;i;i;i<; i;; 0; [iQi'i<o; ;i;i;;i; i<; 0; [iqi'i=o; ;i;i;i>; i=; 0; [iQi i>o; ;i;i=;i; i>; 0; [iqi i?o; ;i;i;i@; i?; I" compat; T; [iQii@o; ;i;i?;i; i@; I" compat; T; [iqiiAo; ;i;i;iB; iA; 0; 0iBo; ;i;iA;i; iB; 0; 0iCo; ;i;i;iD; iC; 0; [iSiiDo; ;i;iC;i; iD; 0; [isiiEo; ;i;i;iF; iE; 0; [iSi'iFo; ;i;iE;i; iF; 0; [isi'iGo; ;i;i;iH; iG; 0; [iSi iHo; ;i;iG;i; iH; 0; [isi iIo; ;i;i;i; iI; I" compat; T; [iisiJo; ;i;i;iK; iJ; 0; 0iKo; ;i;iJ;i; iK; 0; 0iLo; ;i;i;iM; iL; 0; [iTiiMo; ;i;iL;i; iM; 0; [itiiNo; ;i;i;iO; iN; 0; [iTiiOo; ;i;iN;i; iO; 0; [itiiPo; ;i;i;iQ; iP; 0; [iTi iQo; ;i;iP;i; iQ; 0; [iti iRo; ;i;i;iS; iR; 0; 0iSo; ;i;iR;i; iS; 0; 0iTo; ;i;i;iU; iT; 0; [iWiiUo; ;i;iT;i; iU; 0; [iwiiVo; ;i;i;iW; iV; 0; [iWi'iWo; ;i;iV;i; iW; 0; [iwi'iXo; ;i;i;iY; iX; 0; [iWi iYo; ;i;iX;i; iY; 0; [iwi iZo; ;i;i;i[; iZ; 0; [iXii[o; ;i;iZ;i; i[; 0; [ixii\o; ;i;i;i]; i\; 0; [iXii]o; ;i;i\;i; i]; 0; [ixii^o; ;i;i;i_; i^; 0; [iXi'i_o; ;i;i^;i; i_; 0; [ixi'i`o; ;i;i;ia; i`; 0; [iXi iao; ;i;i`;i; ia; 0; [ixi ibo; ;i;i;ic; ib; 0; [iYi'ico; ;i;ib;i; ic; 0; [iyi'ido; ;i;i;ie; id; 0; [iYi ieo; ;i;id;i; ie; 0; [iyi ifo; ;i;i;ig; if; 0; 0igo; ;i;if;i; ig; 0; 0iho; ;i;i;ii; ih; 0; [iZiiio; ;i;ih;i; ii; 0; [iziijo; ;i;i;ik; ij; 0; [iZiiko; ;i;ij;i; ik; 0; [iziilo; ;i;i;im; il; 0; [iZiimo; ;i;il;i; im; 0; [iziino; ;i;i;io; in; 0; [iZi ioo; ;i;in;i; io; 0; [izi ipo; ;i;i;iq; ip; 0; [iZi iqo; ;i;ip;i; iq; 0; [izi iro; ;i;i;is; ir; 0; [iZi(iso; ;i;ir;i; is; 0; [izi(ito; ;i;i;iu; it; 0; [i\iiuo; ;i;it;i; iu; 0; [i|iivo; ;i;i;iw; iv; 0; [i^iiwo; ;i;iv;i; iw; 0; [i~iixo; ;i;i;i; ix; 0; [i^iiyo; ;i;i;iz; iy; 0; [i_iizo; ;i;iy;i; iz; 0; [iii{o; ;i;i;i|; i{; 0; [i_ii|o; ;i;i{;i; i|; 0; [iii}o; ;i;i;i~; i}; 0; [i_i i~o; ;i;i};i; i~; 0; [ii io; ;i;iX;i; i; I" compat; T; [ixio; ;i;iC;i; i; 0; 0io; ;i;i;iS; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;iT; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;iV; i; 0; 0io; ;i;i;iW; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;iY; i; 0; 0io; ;i;i;i[; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i`; i; 0; 0io; ;i;i;ic; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;ii; i; 0; 0io; ;i;i;ih; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i=;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;io; i; 0; 0io; ;i;i;ir; i; 0; 0io; ;i;i ;i; i; 0; 0io; ;i;i;iu; i; 0; 0io; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iIi}io; ;i;i;i; i; I" compat; T; [iIi~io; ;i;i;i; i; I" compat; T; [iii~io; ;i;i;i; i; I" compat; T; [iQiOio; ;i;i;i; i; I" compat; T; [iQioio; ;i;i;i; i; I" compat; T; [iqioio; ;i;i;i; i; I" compat; T; [iSiOio; ;i;i;i; i; I" compat; T; [iSioio; ;i;i;i; i; I" compat; T; [isioio; ;i;i;i; i; 0; [iFi io; ;i;i;i; i; 0; [ifi io; ;i;i;i; i; 0; [iNi io; ;i;i;i; i; 0; [ini io; ;i;i;i; i; 0; [iTi io; ;i;i;i; i; 0; [iti io; ;i;i;i; i; 0; [iZi io; ;i;i;i; i; 0; [izi io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i&iio; ;i;i;i; i; 0; [i'iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iLi io; ;i;i;i; i; 0; [ili io; ;i;i;i; i; 0; [iPi io; ;i;i;i; i; 0; [ipi io; ;i;i;i; i; 0; [iTi(io; ;i;i;i; i; 0; [iti(io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ioi io; ;i;i;i; i; I" compat; T; [iIi_io; ;i;i;i; i; I" compat; T; [iIiio; ;i;i;i; i; I" compat; T; [iiiio; ;i;i;i; i; 0; [iLiio; ;i;i;i; i; 0; [iliio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iSiio; ;i;i;i; i; 0; [isiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [iFiio; ;i;i;i; i; 0; [ifiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i ; i; 0; [iNii o; ;i;i;i; i ; 0; [inii o; ;i;i;i ; i ; 0; [iNii o; ;i;i ;i; i ; 0; [inii o; ;i;i;i ; i ; 0; [iTii o; ;i;i ;i; i ; 0; [itiio; ;i;i;i; i; 0; [iTiio; ;i;i;i; i; 0; [itiio; ;i;i;i; i; 0; [iWiio; ;i;i;i; i; 0; [iwiio; ;i;i;i; i; 0; [iWiio; ;i;i;i; i; 0; [iwiio; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [iZiio; ;i;i;i; i; 0; [iziio; ;i;i;i; i; 0; [iXi&io; ;i;i;i; i; 0; [ixi&io; ;i;i;i; i; 0; [iYi&io; ;i;i;i; i; 0; [iyi&io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iMi io; ;i;i;i; i; 0; [imi i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i#; i"; 0; 0i#o; ;i;i";i; i#; 0; 0i$o; ;i;i;i%; i$; 0; 0i%o; ;i;i$;i; i%; 0; 0i&o; ;i;i;i'; i&; 0; [iFii'o; ;i;i&;i; i'; 0; [ifii(o; ;i;i;i); i(; 0; [iJi'i)o; ;i;i(;i; i); 0; [iji'i*o; ;i;i;i+; i*; 0; [iii+o; ;i;i*;i; i+; 0; [iii,o; ;i;i;i-; i,; 0; [iii-o; ;i;i,;i; i-; 0; [iii.o; ;i;i;i/; i.; 0; [iTii/o; ;i;i.;i; i/; 0; [itii0o; ;i;i;i1; i0; 0; [i.ii1o; ;i;i0;i; i1; 0; [i/ii2o; ;i;i;i3; i2; 0; [i^ii3o; ;i;i2;i; i3; 0; [i~ii4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;ie,; i:; 0; 0i;o; ;i;i;i<; i;; 0; 0i<o; ;i;i;;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;if,; i>; 0; 0i?o; ;i;i~,;i; i?; 0; 0i@o; ;i;i,;i; i@; 0; 0iAo; ;i;i;iB; iA; 0; 0iBo; ;i;iA;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;iG; iF; 0; 0iGo; ;i;iF;i; iG; 0; 0iHo; ;i;i;iI; iH; 0; 0iIo; ;i;iH;i; iI; 0; 0iJo; ;i;i;iK; iJ; 0; 0iKo; ;i;iJ;i; iK; 0; 0iLo; ;i;i;iM; iL; 0; 0iMo; ;i;iL;i; iM; 0; 0iNo; ;i;i;iO; iN; 0; 0iOo; ;i;iN;i; iO; 0; 0iPo; ;i;io,;i; iP; 0; 0iQo; ;i;im,;i; iQ; 0; 0iRo; ;i;ip,;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;ib,;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;in,;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;id,;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;iD;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;iE;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [imio; ;i;i;i; i; I" super; T; [ifio; ;i;i;i; i; I" super; T; [ioio; ;i;i;i; i; I" super; T; [iwio; ;i;i;i; i; I" super; T; [iyio; ;i;i;i; i; I" super; T; [i{io; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [i|io; ;i;i;i; i; I" super; T; [i~io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; I" compat; T; [i%i io; ;i;i;i; i; I" compat; T; [i%i(io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; I" compat; T; [i%i io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [icio; ;i;i;i; i; I" super; T; [iqio; ;i;i;i; i; I" super; T; [ixio; ;i;i;i; i; I" super; T; [i}io; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; [iiAo; ;i;i;i; iA; 0; [iiBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; [iiDo; ;i;i;i; iD; 0; [iiiEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;iq; ip; 0; 0iqo; ;i;ip;i; iq; 0; 0iro; ;i;i;is; ir; 0; 0iso; ;i;ir;i; is; 0; 0ito; ;i;i;i; it; 0; [iiuo; ;i;i;i; iu; 0; 0ivo; ;i;i;iw; iv; 0; 0iwo; ;i;iv;i; iw; 0; 0izo; ;i;i;i; iz; I" compat; T; [i%iEi{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; [i@io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i{; i; 0; 0io; ;i;i;i|; i; 0; 0io; ;i;i;i}; i; 0; 0io; ;i;i;iP; i; 0; [iiio; ;i;i;iQ; i; 0; [iiio; ;i;i;iR; i; 0; 0io; ;i;i;iS; i; 0; [iiio; ;i;i;iT; i; 0; 0io; ;i;i;iU; i; 0; 0io; ;i;i;iV; i; 0; 0io; ;i;i;iW; i; 0; [iiio; ;i;i;iX; i; 0; 0i o; ;i;i;iY; i ; 0; 0i o; ;i;i;iZ; i ; 0; 0i o; ;i;i;i[; i ; 0; 0i o; ;i;i;i\; i ; 0; [iii o; ;i;i;i]; i ; 0; [iiio; ;i;i;i^; i; 0; [i#iio; ;i;i;i_; i; 0; 0io; ;i;i;i0; i; 0; 0io; ;i;i;i1; i; 0; 0io; ;i;i;i2; i; 0; 0io; ;i;i;i3; i; 0; 0io; ;i;i;i4; i; 0; 0io; ;i;i;i5; i; 0; 0io; ;i;i;i6; i; 0; 0io; ;i;i;i7; i; 0; 0io; ;i;i;i8; i; 0; 0io; ;i;i;i9; i; 0; [iiio; ;i;i;i:; i; 0; 0io; ;i;i;i;; i; 0; 0io; ;i;i;i<; i; 0; 0io; ;i;i;i=; i; 0; 0io; ;i;i;i>; i; 0; 0io; ;i;i;i?; i; 0; 0i o; ;i;i;i@; i ; 0; 0i!o; ;i;i;iA; i!; 0; 0i"o; ;i;i;iB; i"; 0; 0i#o; ;i;i;iC; i#; 0; 0i$o; ;i;i;iD; i$; 0; 0i%o; ;i;i;iE; i%; 0; 0i&o; ;i;i;iF; i&; 0; 0i'o; ;i;i;iG; i'; 0; 0i(o; ;i;i;iH; i(; 0; 0i)o; ;i;i;iI; i); 0; 0i*o; ;i;i;iJ; i*; 0; 0i+o; ;i;i;iK; i+; 0; 0i,o; ;i;i;iL; i,; 0; 0i-o; ;i;i;iM; i-; 0; 0i.o; ;i;i;iN; i.; 0; 0i/o; ;i;i;iO; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; [i8ii:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i ;i; i@; 0; 0iAo; ;i;i!;i; iA; 0; 0iBo; ;i;i";i; iB; 0; 0iCo; ;i;i#;i; iC; 0; 0iDo; ;i;i$;i; iD; 0; 0iEo; ;i;i%;i; iE; 0; 0iFo; ;i;i&;i; iF; 0; 0iGo; ;i;i';i; iG; 0; 0iHo; ;i;i(;i; iH; 0; 0iIo; ;i;i);i; iI; 0; 0iJo; ;i;i*;i; iJ; 0; 0iKo; ;i;i+;i; iK; 0; 0iLo; ;i;i,;i; iL; 0; 0iMo; ;i;i-;i; iM; 0; 0iNo; ;i;i.;i; iN; 0; 0iOo; ;i;i/;i; iO; 0; 0iPo; ;i;i;i; iP; 0; [i5iiQo; ;i;i;i; iQ; 0; [i5iiRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; [i3iiTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; [iViiXo; ;i;i;i; iX; 0; 0iYo; ;i;i ;i; iY; 0; 0iZo; ;i;i ;i; iZ; 0; 0i[o; ;i;i ;i; i[; 0; 0i\o; ;i;i ;i; i\; 0; [i:ii]o; ;i;i ;i; i]; 0; [i8ii^o; ;i;i;i; i^; 0; [iCii_o; ;i;i;i; i_; 0; 0i`o; ;i;i;ia; i`; 0; 0iao; ;i;i`;i; ia; 0; 0ibo; ;i;i;ic; ib; 0; 0ico; ;i;ib;i; ic; 0; 0ido; ;i;i;ie; id; 0; 0ieo; ;i;id;i; ie; 0; 0ifo; ;i;i;ig; if; 0; 0igo; ;i;if;i; ig; 0; 0iho; ;i;i;ii; ih; 0; 0iio; ;i;ih;i; ii; 0; 0ijo; ;i;i;ik; ij; 0; 0iko; ;i;ij;i; ik; 0; 0ilo; ;i;i;im; il; 0; 0imo; ;i;il;i; im; 0; 0ino; ;i;i;io; in; 0; 0ioo; ;i;in;i; io; 0; 0ipo; ;i;i;iq; ip; 0; 0iqo; ;i;ip;i; iq; 0; 0iro; ;i;i;is; ir; 0; 0iso; ;i;ir;i; is; 0; 0ito; ;i;i;iu; it; 0; 0iuo; ;i;it;i; iu; 0; 0ivo; ;i;i;iw; iv; 0; [itiiwo; ;i;iv;i; iw; 0; [iuiixo; ;i;i;iy; ix; 0; 0iyo; ;i;ix;i; iy; 0; 0izo; ;i;i;i{; iz; 0; 0i{o; ;i;iz;i; i{; 0; 0i|o; ;i;i;i}; i|; 0; 0i}o; ;i;i|;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i~;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i6iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i0iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i0iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i5iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i6iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i7iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i8iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i8iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i>iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i-iio; ;i;i;i; i; 0; [iMiio; ;i;i;i; i; 0; [i#iio; ;i;i;i; i; 0; [iCiio; ;i;i;i; i; 0; [i#iio; ;i;i;i; i; 0; [iCiio; ;i;i;i; i; 0; [i#i io; ;i;i;i; i; 0; [iCi io; ;i;i;i; i; 0; [i'iio; ;i;i;i; i; 0; [iGiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [i+iio; ;i;i;i; i; 0; [iKiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i ; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i ; i ; 0; 0i o; ;i;i ;i; i ; 0; 0i o; ;i;i;i ; i ; 0; 0i o; ;i;i ;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i!; i ; 0; 0i!o; ;i;i ;i; i!; 0; 0i"o; ;i;i;i#; i"; 0; 0i#o; ;i;i";i; i#; 0; 0i$o; ;i;i;i%; i$; 0; 0i%o; ;i;i$;i; i%; 0; 0i&o; ;i;i;i'; i&; 0; 0i'o; ;i;i&;i; i'; 0; 0i(o; ;i;i;i); i(; 0; 0i)o; ;i;i(;i; i); 0; 0i*o; ;i;i;i+; i*; 0; 0i+o; ;i;i*;i; i+; 0; 0i,o; ;i;i;i-; i,; 0; 0i-o; ;i;i,;i; i-; 0; 0i.o; ;i;i;i/; i.; 0; 0i/o; ;i;i.;i; i/; 0; 0i1o; ;i;i;ia; i1; 0; 0i2o; ;i;i;ib; i2; 0; 0i3o; ;i;i;ic; i3; 0; 0i4o; ;i;i;id; i4; 0; 0i5o; ;i;i;ie; i5; 0; 0i6o; ;i;i;if; i6; 0; 0i7o; ;i;i;ig; i7; 0; 0i8o; ;i;i;ih; i8; 0; 0i9o; ;i;i;ii; i9; 0; 0i:o; ;i;i;ij; i:; 0; 0i;o; ;i;i;ik; i;; 0; 0i<o; ;i;i;il; i<; 0; 0i=o; ;i;i;im; i=; 0; 0i>o; ;i;i;in; i>; 0; 0i?o; ;i;i;io; i?; 0; 0i@o; ;i;i;ip; i@; 0; 0iAo; ;i;i;iq; iA; 0; 0iBo; ;i;i;ir; iB; 0; 0iCo; ;i;i;is; iC; 0; 0iDo; ;i;i;it; iD; 0; 0iEo; ;i;i;iu; iE; 0; 0iFo; ;i;i;iv; iF; 0; 0iGo; ;i;i;iw; iG; 0; 0iHo; ;i;i;ix; iH; 0; 0iIo; ;i;i;iy; iI; 0; 0iJo; ;i;i;iz; iJ; 0; 0iKo; ;i;i;i{; iK; 0; 0iLo; ;i;i;i|; iL; 0; 0iMo; ;i;i;i}; iM; 0; 0iNo; ;i;i;i~; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0iao; ;i;i1;i; ia; 0; 0ibo; ;i;i2;i; ib; 0; 0ico; ;i;i3;i; ic; 0; 0ido; ;i;i4;i; id; 0; 0ieo; ;i;i5;i; ie; 0; 0ifo; ;i;i6;i; if; 0; 0igo; ;i;i7;i; ig; 0; 0iho; ;i;i8;i; ih; 0; 0iio; ;i;i9;i; ii; 0; 0ijo; ;i;i:;i; ij; 0; 0iko; ;i;i;;i; ik; 0; 0ilo; ;i;i<;i; il; 0; 0imo; ;i;i=;i; im; 0; 0ino; ;i;i>;i; in; 0; 0ioo; ;i;i?;i; io; 0; 0ipo; ;i;i@;i; ip; 0; 0iqo; ;i;iA;i; iq; 0; 0iro; ;i;iB;i; ir; 0; 0iso; ;i;iC;i; is; 0; 0ito; ;i;iD;i; it; 0; 0iuo; ;i;iE;i; iu; 0; 0ivo; ;i;iF;i; iv; 0; 0iwo; ;i;iG;i; iw; 0; 0ixo; ;i;iH;i; ix; 0; 0iyo; ;i;iI;i; iy; 0; 0izo; ;i;iJ;i; iz; 0; 0i{o; ;i;iK;i; i{; 0; 0i|o; ;i;iL;i; i|; 0; 0i}o; ;i;iM;i; i}; 0; 0i~o; ;i;iN;i; i~; 0; 0io; ;i;iO;i; i; 0; 0io; ;i;iP;i; i; 0; 0io; ;i;iQ;i; i; 0; 0io; ;i;iR;i; i; 0; 0io; ;i;iS;i; i; 0; 0io; ;i;iT;i; i; 0; 0io; ;i;iU;i; i; 0; 0io; ;i;iV;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [ieiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i#;i;i; i; 0; 0io; ;i$;i;i; i; 0; 0io; ;i%;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; [i'iSi#o; ;i;i;i; i#; 0; [i'iTi$o; ;i;i;i; i$; 0; [iHiTi%o; ;i;i;i; i%; 0; [i'iUi&o; ;i;i;i; i&; 0; [iJiTi'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i ;i;i; iK; 0; 0iLo; ;i!;i;i; iL; 0; 0iMo; ;i";i;i; iM; 0; 0iNo; ;i#;i;i; iN; 0; 0iOo; ;i$;i;i; iO; 0; 0iPo; ;i%;i;i; iP; 0; 0iQo; ;i&;i;i; iQ; 0; 0iRo; ;i';i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i(;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; I" compat; T; [i'itivo; ;i;i;i; iv; I" compat; T; [iHitiwo; ;i;i;i; iw; I" compat; T; [iitixo; ;i;i;i; ix; I" compat; T; [iJitiyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiTio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiTio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiTio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i);i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i^o; ;i;i;i; i^; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i!;i;i; i; 0; 0io; ;i";i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; [i( i< i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; [i0 i< i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; [i3 i< i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i; o; ;i;i;i; i; ; 0; 0i< o; ;i ;i;i; i< ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0iI o; ;i;i;i; iI ; 0; 0iJ o; ;i;i;i; iJ ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iN o; ;i;i;i; iN ; 0; 0iO o; ;i;i;i; iO ; 0; 0iP o; ;i;i;i; iP ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iR o; ;i;i;i; iR ; 0; 0iS o; ;i;i;i; iS ; 0; 0iT o; ;i;i;i; iT ; 0; 0iU o; ;i;i;i; iU ; 0; 0iV o; ;i;i;i; iV ; 0; 0iW o; ;i;i;i; iW ; 0; 0iX o; ;i;i;i; iX ; 0; [i i< iY o; ;i;i;i; iY ; 0; [i i< iZ o; ;i;i;i; iZ ; 0; [i i< i[ o; ;i;i;i; i[ ; 0; [i i< i\ o; ;i;i;i; i\ ; 0; [i! i< i] o; ;i;i;i; i] ; 0; [i" i< i^ o; ;i;i;i; i^ ; 0; [i+ i< i_ o; ;i;i;i; i_ ; 0; [i/ i< i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0id o; ;i;i;i; id ; 0; 0ie o; ;i;i;i; ie ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0iv o; ;i;i;i; iv ; 0; 0iw o; ;i;i;i; iw ; 0; 0ix o; ;i;i;i; ix ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i ;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; [i2 i< i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; [i8 i< i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i< o; ;i ;i;i; i< ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iY o; ;i;i;i; iY ; 0; [i i< iZ o; ;i;i;i; iZ ; 0; [i i< i[ o; ;i;i;i; i[ ; 0; [i i< i\ o; ;i;i;i; i\ ; 0; 0i^ o; ;i;i;i; i^ ; 0; [i+ i< if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i ;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i< o; ;i ;i;i; i< ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; [iG iV iK o; ;i;i;i; iK ; 0; [iG i> iL o; ;i;i;i; iL ; 0; [iG iW iM o; ;i;i;i; iM ; 0; 0iV o; ;i;i;i; iV ; 0; 0iW o; ;i;i;i; iW ; 0; 0i\ o; ;i;i;i; i\ ; 0; [i! i< i] o; ;i;i;i; i] ; 0; [i" i< i_ o; ;i;i;i; i_ ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0iv o; ;i;i;i; iv ; 0; 0iw o; ;i;i;i; iw ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; [iF iV iJ o; ;i;i;i; iJ ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iU o; ;iY;i;i; iU ; 0; 0iV o; ;i`;i;i; iV ; 0; 0iX o; ;i;i;i; iX ; 0; 0iY o; ;i;i;i; iY ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ix o; ;i;i;i; ix ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i ;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0iJ o; ;i;i;i; iJ ; 0; [iF i> iK o; ;i;i;i; iK ; 0; [iG i> iL o; ;i;i;i; iL ; 0; [iF iW iM o; ;i;i;i; iM ; 0; 0iN o; ;i;i;i; iN ; 0; 0iW o; ;i;i;i; iW ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; [i i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; I" compat; T; [iMi2i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;il;i;i; i8; 0; 0i9o; ;il;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;ip;i;i; iH; 0; 0iIo; ;ip;i;i; iI; 0; 0iJo; ;ip;i;i; iJ; 0; 0iKo; ;ip;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i{;i;i; i; 0; 0io; ;i{;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [iiio; ;i;i;i; i; I" compat; T; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; I" noBreak; T; [i i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; [iBiiDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; [iLiiNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; [iQiiSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; [iViiXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; [i[ii]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; [i@iijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; [iqirito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; [iqitivo; ;i;i;i; iv; 0; [iiiwo; ;i;i;i; iw; I" compat; T; [iiixo; ;i;i;i; ix; 0; [iiiyo; ;i;i;i; iy; I" compat; T; [iiizo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iqiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; [i%i.i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i ;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i -; i; 0; 0io; ;i;i;i!-; i; 0; 0io; ;i;i;i"-; i; 0; 0io; ;i;i;i#-; i; 0; 0io; ;i;i;i$-; i; 0; 0io; ;i;i;i%-; i; 0; 0io; ;i;i;i'-; i; 0; 0io; ;i;i;i--; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iXo; ;i;i;i; iX; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i@o; ;i;i;i; i@; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [ii5io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [ii5i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i5i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; [i i5i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; [i i5io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [ii5io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i ;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; [i:i5i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; [i<i5i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; [i>i5iAo; ;i;i;i; iA; 0; [i?i5iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; [iBi5iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i ;i;i; i7; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; I" super; T; [iFi-o; ;i;i;i; i-; I" super; T; [ii.o; ;i;i;i; i.; I" super; T; [iGi/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; I" super; T; [iIi1o; ;i;i;i; i1; I" super; T; [iJi2o; ;i;i;i; i2; I" super; T; [ii3o; ;i;i;i; i3; I" super; T; [iLi4o; ;i;i;i; i4; I" super; T; [iMi5o; ;i;i;i; i5; I" super; T; [iNi6o; ;i;i;i; i6; I" super; T; [iOi7o; ;i;i;i; i7; I" super; T; [iPi8o; ;i;i;i; i8; I" super; T; [iQi9o; ;i;i;i; i9; I" super; T; [iRi:o; ;i;i;i; i:; I" super; T; [iSi;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; I" super; T; [iTi=o; ;i;i;i; i=; I" super; T; [i"i>o; ;i;i;i; i>; I" super; T; [iUi?o; ;i;i;i; i?; I" super; T; [iWi@o; ;i;i;i; i@; I" super; T; [iYiAo; ;i;i;i; iA; I" super; T; [iZiBo; ;i;i;i; iB; I" super; T; [i\iCo; ;i;i;i; iC; I" super; T; [ifiDo; ;i;i;i; iD; I" super; T; [iPiEo; ;i;i;i; iE; I" super; T; [iQiFo; ;i;i;i; iF; I" super; T; [iiGo; ;i;i;i; iG; I" super; T; [igiHo; ;i;i;i; iH; I" super; T; [iiiIo; ;i;i;i; iI; I" super; T; [ijiJo; ;i;i;i; iJ; I" super; T; [iYiKo; ;i;i;i; iK; I" super; T; [i[iLo; ;i;i;i; iL; I" super; T; [i\iMo; ;i;i;i; iM; I" super; T; [iliNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; I" super; T; [ipiPo; ;i;i;i; iP; I" super; T; [iriQo; ;i;i;i; iQ; I" super; T; [iKiRo; ;i;i;i; iR; I" super; T; [itiSo; ;i;i;i; iS; I" super; T; [iTiTo; ;i;i;i; iT; I" super; T; [iiUo; ;i;i;i; iU; I" super; T; [iiVo; ;i;i;i; iV; I" super; T; [iuiWo; ;i;i;i; iW; I" super; T; [iyiXo; ;i;i;i; iX; I" super; T; [iziYo; ;i;i;i; iY; I" super; T; [iiZo; ;i;i;i; iZ; I" super; T; [ioi[o; ;i;i;i; i[; I" super; T; [i{i\o; ;i;i;i; i\; I" super; T; [i%i]o; ;i;i;i; i]; I" super; T; [ii^o; ;i;i;i; i^; I" super; T; [ii_o; ;i;i;i; i_; I" super; T; [ii`o; ;i;i;i; i`; I" super; T; [iiao; ;i;i;i; ia; I" super; T; [iibo; ;i;i;i; ib; I"sub; T; [inico; ;i;i;i; ic; I"sub; T; [iwido; ;i;i;i; id; I"sub; T; [izieo; ;i;i;i; ie; I"sub; T; [i{ifo; ;i;i;i; if; I"sub; T; [iigo; ;i;i;i; ig; I"sub; T; [iiho; ;i;i;i; ih; I"sub; T; [iiio; ;i;i;i; ii; I"sub; T; [iijo; ;i;i;i; ij; I"sub; T; [iiko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; I" super; T; [i=iyo; ;i;i};i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;ic,;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [iRio; ;i;i;i; i; I" super; T; [ihio; ;i;i;i; i; I" super; T; [iUio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [i\io; ;i;i;i; i; I" super; T; [ikio; ;i;i;i; i; I" super; T; [i_io; ;i;i;i; i; I" super; T; [iaio; ;i;i;i; i; I" super; T; [ieio; ;i;i;i; i; I" super; T; [ihio; ;i;i;i; i; I" super; T; [iiio; ;i;i;i; i; I" super; T; [ijio; ;i;i;i; i; I" super; T; [i{io; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [imio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iqio; ;i;i;i; i; I" super; T; [ipio; ;i;i;i; i; I" super; T; [irio; ;i;i;i; i; I" super; T; [isio; ;i;i;i; i; I" super; T; [itio; ;i;i;i; i; I" super; T; [iuio; ;i;i;i; i; I" super; T; [ixio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; I" super; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iFi%io; ;i;i;i; i; 0; [ifi%io; ;i;i;i; i; 0; [iGiio; ;i;i;i; i; 0; [igiio; ;i;i;i; i; 0; [iGi#io; ;i;i;i; i; 0; [igi#io; ;i;i;i; i; 0; [iGi1io; ;i;i;i; i; 0; [igi1io; ;i;i;i ; i; 0; [iii o; ;i;i;i; i ; 0; [iii o; ;i;i;i ; i ; 0; [iIii o; ;i;i ;i; i ; 0; [iiii o; ;i;i;i ; i ; 0; [iIi#i o; ;i;i ;i; i ; 0; [iii#io; ;i;i;i; i; 0; [iIi1io; ;i;i;i; i; 0; [iii1io; ;i;i;i; i; 0; [iIi'io; ;i;i;i; i; 0; [iii'io; ;i;i;i; i; 0; [iIi-io; ;i;i;i; i; 0; [iii-io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iJi-io; ;i;i;i; i; 0; [iji-io; ;i;i;i; i; 0; [iJi0io; ;i;i;i; i; 0; [iji0io; ;i;i;i; i; 0; [i(iio; ;i;i;i; i; 0; [i)iio; ;i;i;i; i; 0; [iKiio; ;i;i;i; i; 0; [ikii o; ;i;i;i!; i ; 0; [iLii!o; ;i;i ;i; i!; 0; [ilii"o; ;i;i;i#; i"; 0; [iMii#o; ;i;i";i; i#; 0; [imii$o; ;i;i;i%; i$; 0; [iMi#i%o; ;i;i$;i; i%; 0; [imi#i&o; ;i;i;i'; i&; 0; [iMii'o; ;i;i&;i; i'; 0; [imii(o; ;i;i;i); i(; 0; [iMi'i)o; ;i;i(;i; i); 0; [imi'i*o; ;i;i;i+; i*; 0; [iMi.i+o; ;i;i*;i; i+; 0; [imi.i,o; ;i;i;i-; i,; 0; [iNi0i-o; ;i;i,;i; i-; 0; [ini0i.o; ;i;i;i/; i.; 0; [iii/o; ;i;i.;i; i/; 0; [iii0o; ;i;i;i1; i0; 0; [iPii1o; ;i;i0;i; i1; 0; [ipii2o; ;i;i;i3; i2; 0; [iPi#i3o; ;i;i2;i; i3; 0; [ipi#i4o; ;i;i;i5; i4; 0; [iPi1i5o; ;i;i4;i; i5; 0; [ipi1i6o; ;i;i;i7; i6; 0; [iQi#i7o; ;i;i6;i; i7; 0; [iqi#i8o; ;i;i;i9; i8; 0; [i6ii9o; ;i;i8;i; i9; 0; [i7ii:o; ;i;i;i;; i:; 0; [iQi1i;o; ;i;i:;i; i;; 0; [iqi1i<o; ;i;i;i=; i<; 0; [iQi-i=o; ;i;i<;i; i=; 0; [iqi-i>o; ;i;i;i?; i>; 0; [iRii?o; ;i;i>;i; i?; 0; [irii@o; ;i;i;iA; i@; 0; [iRiiAo; ;i;i@;i; iA; 0; [iriiBo; ;i;i;iC; iB; 0; [iRi#iCo; ;i;iB;i; iC; 0; [iri#iDo; ;i;i;iE; iD; 0; [iSiiEo; ;i;iD;i; iE; 0; [isiiFo; ;i;i;iG; iF; 0; [iSi#iGo; ;i;iF;i; iG; 0; [isi#iHo; ;i;i;iI; iH; 0; [iSi1iIo; ;i;iH;i; iI; 0; [isi1iJo; ;i;i;iK; iJ; 0; [iSi-iKo; ;i;iJ;i; iK; 0; [isi-iLo; ;i;i;iM; iL; 0; [iiiMo; ;i;iL;i; iM; 0; [iiiNo; ;i;i;iO; iN; 0; [iiiOo; ;i;iN;i; iO; 0; [iiiPo; ;i;i;iQ; iP; 0; [iLiiQo; ;i;iP;i; iQ; 0; [iMiiRo; ;i;i;iS; iR; 0; [iLiiSo; ;i;iR;i; iS; 0; [iMiiTo; ;i;i;iU; iT; 0; [iUiiUo; ;i;iT;i; iU; 0; [iuiiVo; ;i;i;iW; iV; 0; [iUiiWo; ;i;iV;i; iW; 0; [iuiiXo; ;i;i;iY; iX; 0; [iWiiYo; ;i;iX;i; iY; 0; [iwiiZo; ;i;i;i[; iZ; 0; [iWi#i[o; ;i;iZ;i; i[; 0; [iwi#i\o; ;i;i;i]; i\; 0; [iZii]o; ;i;i\;i; i]; 0; [i[ii^o; ;i;i;i_; i^; 0; [iWi1i_o; ;i;i^;i; i_; 0; [iwi1i`o; ;i;i;ia; i`; 0; [iXiiao; ;i;i`;i; ia; 0; [ixiibo; ;i;i;ic; ib; 0; [iXi#ico; ;i;ib;i; ic; 0; [ixi#ido; ;i;i;ie; id; 0; [iZiieo; ;i;id;i; ie; 0; [i[iifo; ;i;i;ig; if; 0; [i`iigo; ;i;if;i; ig; 0; [iaiiho; ;i;i;ii; ih; 0; [ibiiio; ;i;ih;i; ii; 0; [iciijo; ;i;i;ik; ij; 0; [iYiiko; ;i;ij;i; ik; 0; [iyiilo; ;i;i;im; il; 0; [iYi#imo; ;i;il;i; im; 0; [iyi#ino; ;i;i;io; in; 0; [iYi1ioo; ;i;in;i; io; 0; [iyi1ipo; ;i;i;iq; ip; 0; [iYi-iqo; ;i;ip;i; iq; 0; [iyi-iro; ;i;i;is; ir; 0; [iZi$iso; ;i;ir;i; is; 0; [izi$ito; ;i;i;iu; it; 0; [iZi0iuo; ;i;it;i; iu; 0; [izi0ivo; ;i;i;iw; iv; 0; [iZi-iwo; ;i;iv;i; iw; 0; [izi-ixo; ;i;i;iy; ix; 0; [ihiiyo; ;i;ix;i; iy; 0; [iiiizo; ;i;i;i{; iz; 0; [ijii{o; ;i;iz;i; i{; 0; [ikii|o; ;i;i;i}; i|; 0; [i[ii}o; ;i;i|;i; i}; 0; [i{ii~o; ;i;i;i; i~; 0; [i[i#io; ;i;i~;i; i; 0; [i{i#io; ;i;i;i; i; 0; [i\iio; ;i;i;i; i; 0; [i|iio; ;i;i;i; i; 0; [i\iio; ;i;i;i; i; 0; [i|iio; ;i;i;i; i; 0; [i\iio; ;i;i;i; i; 0; [i|iio; ;i;i;i; i; 0; [i\iio; ;i;i;i; i; 0; [i|iio; ;i;i;i; i; 0; [i\i#io; ;i;i;i; i; 0; [i|i#io; ;i;i;i; i; 0; [i]iio; ;i;i;i; i; 0; [i}iio; ;i;i;i; i; 0; [i]iio; ;i;i;i; i; 0; [i}iio; ;i;i;i; i; 0; [i^iio; ;i;i;i; i; 0; [i~iio; ;i;i;i; i; 0; [i_iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i_i#io; ;i;i;i; i; 0; [ii#io; ;i;i;i; i; 0; [i_i1io; ;i;i;i; i; 0; [ii1io; ;i;i;i; i; 0; [imi1io; ;i;i;i; i; 0; [iyiio; ;i;i;i; i; 0; [i|i io; ;i;i;i; i; 0; [i~i io; ;i;i;i; i; I" compat; T; [ifiio; ;i;i`;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iFi#io; ;i;i;i; i; 0; [ifi#io; ;i;i;i; i; 0; [iFi io; ;i;i;i; i; 0; [ifi io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iJi#io; ;i;i;i; i; 0; [iji#io; ;i;i;i; i; 0; [iJi io; ;i;i;i; i; 0; [iji io; ;i;i;i; i; 0; [iJiio; ;i;i;i; i; 0; [ijiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iNi io; ;i;i;i; i; 0; [ini io; ;i;i;i; i; 0; [iNi#io; ;i;i;i; i; 0; [ini#io; ;i;i;i; i; 0; [iTi#io; ;i;i;i; i; 0; [iti#io; ;i;i;i; i; 0; [iTi io; ;i;i;i; i; 0; [iti io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii#io; ;i;i;i; i; 0; [ii#io; ;i;i;i; i; 0; [iZi#io; ;i;i;i; i; 0; [izi#io; ;i;i;i; i; 0; [iZi io; ;i;i;i; i; 0; [izi io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [ii io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ii#io; ;i;i;i; i; 0; [ii#io; ;i;i;i; i; 0; [i^iio; ;i;i;i; i; 0; [i~iio; ;i;i;i; i; 0; [i^i#io; ;i;i;i; i; 0; [i~i#io; ;i;i;i; i; 0; [i^i io; ;i;i;i; i; 0; [i~i io; ;i;i;i; i; 0; [i^iio; ;i;i;i; i; 0; [i~iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i ;i; i; 0; [iiio; ;i;i ;i; i; 0; [iiio; ;i;i ;i; i; 0; [iiio; ;i;i ;i; i; 0; [iiio; ;i;i ;i; i; 0; [iiio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iii o; ;i;i;i; i ; 0; [iii o; ;i;i;i; i ; 0; [iii o; ;i;i;i; i ; 0; [i ii o; ;i;i;i; i ; 0; [iii o; ;i;i;i; i ; 0; [i iio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [i iBio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iii o; ;i;i(;i; i ; 0; [iii!o; ;i;i);i; i!; 0; [iii"o; ;i;i*;i; i"; 0; [i ii#o; ;i;i+;i; i#; 0; [i!ii$o; ;i;i,;i; i$; 0; [i ii%o; ;i;i-;i; i%; 0; [i!ii&o; ;i;i.;i; i&; 0; [i iBi'o; ;i;i/;i; i'; 0; [i!iBi(o; ;i;i;i ; i(; 0; [iii)o; ;i;i;i!; i); 0; [iii*o; ;i;i;i"; i*; 0; [i(ii+o; ;i;i;i#; i+; 0; [i)ii,o; ;i;i;i$; i,; 0; [i(ii-o; ;i;i;i%; i-; 0; [i)ii.o; ;i;i;i&; i.; 0; [i(iBi/o; ;i;i;i'; i/; 0; [i)iBi0o; ;i;i8;i; i0; 0; [iii1o; ;i;i9;i; i1; 0; [iii2o; ;i;i:;i; i2; 0; [i0ii3o; ;i;i;;i; i3; 0; [i1ii4o; ;i;i<;i; i4; 0; [i0ii5o; ;i;i=;i; i5; 0; [i1ii6o; ;i;i>;i; i6; 0; [i0iBi7o; ;i;i?;i; i7; 0; [i1iBi8o; ;i;i;i0; i8; 0; [iii9o; ;i;i;i1; i9; 0; [iii:o; ;i;i;i2; i:; 0; [i8ii;o; ;i;i;i3; i;; 0; [i9ii<o; ;i;i;i4; i<; 0; [i8ii=o; ;i;i;i5; i=; 0; [i9ii>o; ;i;i;i6; i>; 0; [i8iBi?o; ;i;i;i7; i?; 0; [i9iBi@o; ;i;iH;i; i@; 0; [iiiAo; ;i;iI;i; iA; 0; [iiiBo; ;i;iJ;i; iB; 0; [i@iiCo; ;i;iK;i; iC; 0; [iAiiDo; ;i;iL;i; iD; 0; [i@iiEo; ;i;iM;i; iE; 0; [iAiiHo; ;i;i;i@; iH; 0; [iiiIo; ;i;i;iA; iI; 0; [iiiJo; ;i;i;iB; iJ; 0; [iHiiKo; ;i;i;iC; iK; 0; [iIiiLo; ;i;i;iD; iL; 0; [iHiiMo; ;i;i;iE; iM; 0; [iIiiPo; ;i;i;i; iP; 0; [iiiQo; ;i;iY;i; iQ; 0; [iiiRo; ;i;i;i; iR; 0; [iPiiSo; ;i;i[;i; iS; 0; [iQiiTo; ;i;i;i; iT; 0; [iPiiUo; ;i;i];i; iU; 0; [iQiiVo; ;i;i;i; iV; 0; [iPiBiWo; ;i;i_;i; iW; 0; [iQiBiYo; ;i;i;iQ; iY; 0; [iii[o; ;i;i;iS; i[; 0; [iYii]o; ;i;i;iU; i]; 0; [iYii_o; ;i;i;iW; i_; 0; [iYiBi`o; ;i;ih;i; i`; 0; [iiiao; ;i;ii;i; ia; 0; [iiibo; ;i;ij;i; ib; 0; [i`iico; ;i;ik;i; ic; 0; [iaiido; ;i;il;i; id; 0; [i`iieo; ;i;im;i; ie; 0; [iaiifo; ;i;in;i; if; 0; [i`iBigo; ;i;io;i; ig; 0; [iaiBiho; ;i;i;i`; ih; 0; [iiiio; ;i;i;ia; ii; 0; [iiijo; ;i;i;ib; ij; 0; [ihiiko; ;i;i;ic; ik; 0; [iiiilo; ;i;i;id; il; 0; [ihiimo; ;i;i;ie; im; 0; [iiiino; ;i;i;if; in; 0; [ihiBioo; ;i;i;ig; io; 0; [iiiBipo; ;i;i;i; ip; 0; [iiiqo; ;i;i;i; iq; 0; [iiro; ;i;i;i; ir; 0; [iiiso; ;i;i;i; is; 0; [iito; ;i;i;i; it; 0; [iiiuo; ;i;i;i; iu; 0; [iivo; ;i;i;i; iv; 0; [iiiwo; ;i;i;i; iw; 0; [iixo; ;i;i;i; ix; 0; [iiiyo; ;i;i;i; iy; 0; [iizo; ;i;i;i; iz; 0; [iii{o; ;i;i;i; i{; 0; [ii|o; ;i;i;i; i|; 0; [iii}o; ;i;i;i; i}; 0; [iio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [i iEio; ;i;i;i; i; 0; [i!iEio; ;i;i;i; i; 0; [i"iEio; ;i;i;i; i; 0; [i#iEio; ;i;i;i; i; 0; [i$iEio; ;i;i;i; i; 0; [i%iEio; ;i;i;i; i; 0; [i&iEio; ;i;i;i; i; 0; [i'iEio; ;i;i;i; i; 0; [i(iEio; ;i;i;i; i; 0; [i)iEio; ;i;i;i; i; 0; [i*iEio; ;i;i;i; i; 0; [i+iEio; ;i;i;i; i; 0; [i,iEio; ;i;i;i; i; 0; [i-iEio; ;i;i;i; i; 0; [i.iEio; ;i;i;i; i; 0; [i/iEio; ;i;i;i; i; 0; [i`iEio; ;i;i;i; i; 0; [iaiEio; ;i;i;i; i; 0; [ibiEio; ;i;i;i; i; 0; [iciEio; ;i;i;i; i; 0; [idiEio; ;i;i;i; i; 0; [ieiEio; ;i;i;i; i; 0; [ifiEio; ;i;i;i; i; 0; [igiEio; ;i;i;i; i; 0; [ihiEio; ;i;i;i; i; 0; [iiiEio; ;i;i;i; i; 0; [ijiEio; ;i;i;i; i; 0; [ikiEio; ;i;i;i; i; 0; [iliEio; ;i;i;i; i; 0; [imiEio; ;i;i;i; i; 0; [iniEio; ;i;i;i; i; 0; [ioiEio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ipiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;ip; i; 0; [iiio; ;i;i;iq; i; 0; [iio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; I" compat; T; [i%iio; ;i;i;i; i; I" compat; T; [i%iBio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [itiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiEio; ;i;i;ir; i; 0; [iiio; ;i;i;is; i; 0; [iio; ;i;i;it; i; 0; [iiio; ;i;i;iu; i; 0; [iio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;iv; i; 0; [iiio; ;i;i;iw; i; 0; [iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;iz; i; 0; [iiio; ;i;i;i{; i; 0; [iio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ieio; ;i;i;i; i; 0; [i|iEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iiBio; ;i;i;i; i; 0; [iiEio; ;i;i;ix; i; 0; [iiio; ;i;i;iy; i; 0; [iio; ;i;i;i|; i; 0; [iiio; ;i;i;i}; i; 0; [iio; ;i;i;i; i; 0; [iiEio; ;i;i;i; i; 0; [iio; ;i;i;i; i; I" compat; T; [i%ii o; ;i;i;i; i ; 0; [i i o; ;i;i;i; i ; 0; [i i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" noBreak; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; I" compat; T; [i%i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; I" noBreak; T; [i i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; I" compat; T; [i%i3i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; I" compat; T; [i3i% o; ;i;i;i; i% ; I" compat; T; [i3i3i& o; ;i;i;i; i& ; I" compat; T; [i3i3i3i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; I" noBreak; T; [i%i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; I" compat; T; [i2 i2 i4 o; ;i;i;i; i4 ; I" compat; T; [i2 i2 i2 i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; I" compat; T; [i5 i5 i7 o; ;i;i;i; i7 ; I" compat; T; [i5 i5 i5 i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i; o; ;i;i;i; i; ; 0; 0i< o; ;i;i;i; i< ; I" compat; T; [i&i&i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; I" compat; T; [i%ii? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; I" compat; T; [iDiDiH o; ;i;i;i; iH ; I" compat; T; [iDi&iI o; ;i;i;i; iI ; I" compat; T; [i&iDiJ o; ;i;i;i; iJ ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iN o; ;i;i;i; iN ; 0; 0iO o; ;i;i;i; iO ; 0; 0iP o; ;i;i;i; iP ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iR o; ;i;i;i; iR ; 0; 0iS o; ;i;i;i; iS ; 0; 0iT o; ;i;i;i; iT ; 0; 0iU o; ;i;i;i; iU ; 0; 0iV o; ;i;i;i; iV ; 0; 0iW o; ;i;i;i; iW ; I" compat; T; [ i2 i2 i2 i2 iX o; ;i;i;i; iX ; 0; 0iY o; ;i;i;i; iY ; 0; 0iZ o; ;i;i;i; iZ ; 0; 0i[ o; ;i;i;i; i[ ; 0; 0i\ o; ;i;i;i; i\ ; 0; 0i] o; ;i;i;i; i] ; 0; 0i^ o; ;i;i;i; i^ ; 0; 0i_ o; ;i;i;i; i_ ; I" compat; T; [i%i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0id o; ;i;i;i; id ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; I" super; T; [i5iq o; ;i;i;i; iq ; I" super; T; [init o; ;i;i;i; it ; I" super; T; [i9iu o; ;i;i;i; iu ; I" super; T; [i:iv o; ;i;i;i; iv ; I" super; T; [i;iw o; ;i;i;i; iw ; I" super; T; [iiz o; ;i;i;i; iz ; I" super; T; [i0i{ o; ;i;i;i; i{ ; I" super; T; [i"i| o; ;i;i;i; i| ; I" super; T; [iBi} o; ;i;i;i; i} ; I" super; T; [i-i~ o; ;i;i;i; i~ ; I" super; T; [i.i o; ;i;i;i; i ; I" super; T; [isi o; ;i;i;i; i ; I"sub; T; [i5i o; ;i;i;i; i ; I"sub; T; [i6i o; ;i;i;i; i ; I"sub; T; [i7i o; ;i;i;i; i ; I"sub; T; [i8i o; ;i;i;i; i ; I"sub; T; [i9i o; ;i;i;i; i ; I"sub; T; [i:i o; ;i;i;i; i ; I"sub; T; [i;i o; ;i;i;i; i ; I"sub; T; [ii o; ;i;i;i; i ; I"sub; T; [i0i o; ;i;i;i; i ; I"sub; T; [i"i o; ;i;i;i; i ; I"sub; T; [iBi o; ;i;i;i; i ; I"sub; T; [i-i o; ;i;i;i; i ; I"sub; T; [i.i o; ;i;i;i; i ; I"sub; T; [ifi o; ;i;i;i; i ; I"sub; T; [iji o; ;i;i;i; i ; I"sub; T; [iti o; ;i;i;i; i ; I"sub; T; [i}i o; ;i;i;i; i ; I"sub; T; [iYi o; ;i;i;i; i ; I"sub; T; [imi o; ;i;i;i; i ; I"sub; T; [ipi o; ;i;i;i; i ; I"sub; T; [iqi o; ;i;i;i; i ; I"sub; T; [iri o; ;i;i;i; i ; I"sub; T; [isi o; ;i;i;i; i ; I"sub; T; [iui o; ;i;i;i; i ; I"sub; T; [ixi o; ;i;i;i; i ; I"sub; T; [iyi o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; I" compat; T; [iWixi o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; I" compat; T; [ifi4ihi!o; ;i;i;i; i!; I" compat; T; [ifi4ixi!o; ;i;i;i; i!; I" font; T; [iHi!o; ;i;i;i; i!; I" compat; T; [iiHi!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; I" compat; T; [ihi4iti!o; ;i;i;i; i!; I" compat; T; [ihi4izi!o; ;i;i;i; i!; I" compat; T; [ii!o; ;i;i;i; i!; 0; 0i !o; ;i;i;i; i !; I" compat; T; [iiKi !o; ;i;i;i; i !; I" font; T; [ili !o; ;i;i;i; i !; I" font; T; [iMi !o; ;i;i;i; i !; I" font; T; [iMi !o; ;i;i;i; i !; I" font; T; [iMi!o; ;i;i;i; i!; I" font; T; [imi!o; ;i;i;i; i!; I" font; T; [i'i!o; ;i;i;i; i!; I" font; T; [iNi!o; ;i;i;i; i!; I" font; T; [iNi!o; ;i;i;i; i!; I" font; T; [iQi!o; ;i;i;i; i!; I" font; T; [iqi!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; I" font; T; [iSi!o; ;i;i;i; i!; I" compat; T; [iSiti!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; I" font; T; [iUi!o; ;i;i;i; i!; I" font; T; [iVi!o; ;i;i;i; i!; I" font; T; [iWi!o; ;i;i;i; i!; I" font; T; [iWi!o; ;i;i;i; i!; I" font; T; [iWi!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i !o; ;i;i;i; i !; I" super; T; [iXiRi!!o; ;i;i;i; i!!; I" compat; T; [iYiJiQi"!o; ;i;i;i; i"!; I" super; T; [iYiRi#!o; ;i;i;i; i#!; 0; 0i$!o; ;i;i;i; i$!; I" font; T; [i_i%!o; ;i;i;i; i%!; 0; 0i&!o; ;i;i;i; i&!; 0; [ii'!o; ;i;i;i; i'!; 0; 0i(!o; ;i;i;i; i(!; I" font; T; [i_i)!o; ;i;i;i; i)!; 0; 0i*!o; ;i;i;ip; i*!; 0; [iPi+!o; ;i;i;i; i+!; 0; [ii,!o; ;i;i;i; i,!; I" font; T; [iGi-!o; ;i;i;i; i-!; I" font; T; [iHi.!o; ;i;i;i; i.!; 0; 0i/!o; ;i;i;i; i/!; I" font; T; [iji0!o; ;i;i;i; i0!; I" font; T; [iJi1!o; ;i;i;i; i1!; I" font; T; [iKi2!o; ;i;i;iN!; i2!; 0; 0i3!o; ;i;i;i; i3!; I" font; T; [iRi4!o; ;i;i;i; i4!; I" font; T; [iti5!o; ;i;i;i; i5!; I" compat; T; [ii6!o; ;i;i;i; i6!; I" compat; T; [ii7!o; ;i;i;i; i7!; I" compat; T; [ii8!o; ;i;i;i; i8!; I" compat; T; [ii9!o; ;i;i;i; i9!; I" font; T; [ini:!o; ;i;i;i; i:!; 0; 0i;!o; ;i;i;i; i;!; I" compat; T; [iKiFi]i!o; ;i;i;i; i>!; I" font; T; [ii?!o; ;i;i;i; i?!; I" font; T; [ii@!o; ;i;i;i; i@!; I" font; T; [i"iA!o; ;i;i;i; iA!; 0; 0iB!o; ;i;i;i; iB!; 0; 0iC!o; ;i;i;i; iC!; 0; 0iD!o; ;i;i;i; iD!; 0; 0iE!o; ;i;i;i; iE!; I" font; T; [iIiF!o; ;i;i;i; iF!; I" font; T; [iiiG!o; ;i;i;i; iG!; I" font; T; [ijiH!o; ;i;i;i; iH!; I" font; T; [iniI!o; ;i;i;i; iI!; I" font; T; [ioiJ!o; ;i;i;i; iJ!; 0; 0iK!o; ;i;i;i; iK!; 0; 0iL!o; ;i;i;i; iL!; 0; 0iM!o; ;i;i;i; iM!; 0; 0iN!o; ;i;i2!;i; iN!; 0; 0iO!o; ;i;i;i; iO!; 0; 0iP!o; ;i;i;i; iP!; I" fraction; T; [i6iD iiR!o; ;i;i;i; iR!; I" fraction; T; [ i6iD i6i5iS!o; ;i;i;i; iS!; I" fraction; T; [i6iD i8iT!o; ;i;i;i; iT!; I" fraction; T; [i7iD i8iU!o; ;i;i;i; iU!; I" fraction; T; [i6iD i:iV!o; ;i;i;i; iV!; I" fraction; T; [i7iD i:iW!o; ;i;i;i; iW!; I" fraction; T; [i8iD i:iX!o; ;i;i;i; iX!; I" fraction; T; [i9iD i:iY!o; ;i;i;i; iY!; I" fraction; T; [i6iD i;iZ!o; ;i;i;i; iZ!; I" fraction; T; [i:iD i;i[!o; ;i;i;i; i[!; I" fraction; T; [i6iD i=i\!o; ;i;i;i; i\!; I" fraction; T; [i8iD i=i]!o; ;i;i;i; i]!; I" fraction; T; [i:iD i=i^!o; ;i;i;i; i^!; I" fraction; T; [i"o; ;i;i;i; i>"; 0; 0i?"o; ;i;i;i; i?"; 0; 0i@"o; ;i;i;i; i@"; 0; 0iA"o; ;i;i;i; iA"; 0; [i<"i8iB"o; ;i;i;i; iB"; 0; 0iC"o; ;i;i;i; iC"; 0; 0iD"o; ;i;i;i; iD"; 0; [iC"i8iE"o; ;i;i;i; iE"; 0; 0iF"o; ;i;i;i; iF"; 0; 0iG"o; ;i;i;i; iG"; 0; [iE"i8iH"o; ;i;i;i; iH"; 0; 0iI"o; ;i;i;i; iI"; 0; [iH"i8iJ"o; ;i;i;i; iJ"; 0; 0iK"o; ;i;i;i; iK"; 0; 0iL"o; ;i;i;i; iL"; 0; 0iM"o; ;i;i;i; iM"; 0; 0iN"o; ;i;i;i; iN"; 0; 0iO"o; ;i;i;i; iO"; 0; 0iP"o; ;i;i;i; iP"; 0; 0iQ"o; ;i;i;i; iQ"; 0; 0iR"o; ;i;i;i; iR"; 0; 0iS"o; ;i;i;i; iS"; 0; 0iT"o; ;i;i;i; iT"; 0; 0iU"o; ;i;i;i; iU"; 0; 0iV"o; ;i;i;i; iV"; 0; 0iW"o; ;i;i;i; iW"; 0; 0iX"o; ;i;i;i; iX"; 0; 0iY"o; ;i;i;i; iY"; 0; 0iZ"o; ;i;i;i; iZ"; 0; 0i["o; ;i;i;i; i["; 0; 0i\"o; ;i;i;i; i\"; 0; 0i]"o; ;i;i;i; i]"; 0; 0i^"o; ;i;i;i; i^"; 0; 0i_"o; ;i;i;i; i_"; 0; 0i`"o; ;i;i;i; i`"; 0; [iBi8ia"o; ;i;i;i; ia"; 0; 0ib"o; ;i;i;i; ib"; 0; [ia"i8ic"o; ;i;i;i; ic"; 0; 0id"o; ;i;i;i; id"; 0; 0ie"o; ;i;i;i; ie"; 0; 0if"o; ;i;i;i; if"; 0; 0ig"o; ;i;i;i; ig"; 0; 0ih"o; ;i;i;i; ih"; 0; 0ii"o; ;i;i;i; ii"; 0; 0ij"o; ;i;i;i; ij"; 0; 0ik"o; ;i;i;i; ik"; 0; 0il"o; ;i;i;i; il"; 0; 0im"o; ;i;i;i; im"; 0; [iM"i8in"o; ;i;i;i; in"; 0; [iAi8io"o; ;i;i;i; io"; 0; [iCi8ip"o; ;i;i;i; ip"; 0; [id"i8iq"o; ;i;i;i; iq"; 0; [ie"i8ir"o; ;i;i;i; ir"; 0; 0is"o; ;i;i;i; is"; 0; 0it"o; ;i;i;i; it"; 0; [ir"i8iu"o; ;i;i;i; iu"; 0; [is"i8iv"o; ;i;i;i; iv"; 0; 0iw"o; ;i;i;i; iw"; 0; 0ix"o; ;i;i;i; ix"; 0; [iv"i8iy"o; ;i;i;i; iy"; 0; [iw"i8iz"o; ;i;i;i; iz"; 0; 0i{"o; ;i;i;i; i{"; 0; 0i|"o; ;i;i;i; i|"; 0; 0i}"o; ;i;i;i; i}"; 0; 0i~"o; ;i;i;i; i~"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [iz"i8i"o; ;i;i;i; i"; 0; [i{"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [i|"i8i"o; ;i;i;i; i"; 0; [i}"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; [i"i8i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i #o; ;i;i;i; i #; 0; 0i!#o; ;i;i;i; i!#; 0; 0i"#o; ;i;i;i; i"#; 0; 0i##o; ;i;i;i; i##; 0; 0i$#o; ;i;i;i; i$#; 0; 0i%#o; ;i;i;i; i%#; 0; 0i&#o; ;i;i;i; i&#; 0; 0i'#o; ;i;i;i; i'#; 0; 0i(#o; ;i;i;i; i(#; 0; 0i)#o; ;i;i;i; i)#; 0; [i0i*#o; ;i;i;i; i*#; 0; [i 0i+#o; ;i;i;i; i+#; 0; 0i,#o; ;i;i;i; i,#; 0; 0i-#o; ;i;i;i; i-#; 0; 0i.#o; ;i;i;i; i.#; 0; 0i/#o; ;i;i;i; i/#; 0; 0i0#o; ;i;i;i; i0#; 0; 0i1#o; ;i;i;i; i1#; 0; 0i2#o; ;i;i;i; i2#; 0; 0i3#o; ;i;i;i; i3#; 0; 0i4#o; ;i;i;i; i4#; 0; 0i5#o; ;i;i;i; i5#; 0; 0i6#o; ;i;i;i; i6#; 0; 0i7#o; ;i;i;i; i7#; 0; 0i8#o; ;i;i;i; i8#; 0; 0i9#o; ;i;i;i; i9#; 0; 0i:#o; ;i;i;i; i:#; 0; 0i;#o; ;i;i;i; i;#; 0; 0i<#o; ;i;i;i; i<#; 0; 0i=#o; ;i;i;i; i=#; 0; 0i>#o; ;i;i;i; i>#; 0; 0i?#o; ;i;i;i; i?#; 0; 0i@#o; ;i;i;i; i@#; 0; 0iA#o; ;i;i;i; iA#; 0; 0iB#o; ;i;i;i; iB#; 0; 0iC#o; ;i;i;i; iC#; 0; 0iD#o; ;i;i;i; iD#; 0; 0iE#o; ;i;i;i; iE#; 0; 0iF#o; ;i;i;i; iF#; 0; 0iG#o; ;i;i;i; iG#; 0; 0iH#o; ;i;i;i; iH#; 0; 0iI#o; ;i;i;i; iI#; 0; 0iJ#o; ;i;i;i; iJ#; 0; 0iK#o; ;i;i;i; iK#; 0; 0iL#o; ;i;i;i; iL#; 0; 0iM#o; ;i;i;i; iM#; 0; 0iN#o; ;i;i;i; iN#; 0; 0iO#o; ;i;i;i; iO#; 0; 0iP#o; ;i;i;i; iP#; 0; 0iQ#o; ;i;i;i; iQ#; 0; 0iR#o; ;i;i;i; iR#; 0; 0iS#o; ;i;i;i; iS#; 0; 0iT#o; ;i;i;i; iT#; 0; 0iU#o; ;i;i;i; iU#; 0; 0iV#o; ;i;i;i; iV#; 0; 0iW#o; ;i;i;i; iW#; 0; 0iX#o; ;i;i;i; iX#; 0; 0iY#o; ;i;i;i; iY#; 0; 0iZ#o; ;i;i;i; iZ#; 0; 0i[#o; ;i;i;i; i[#; 0; 0i\#o; ;i;i;i; i\#; 0; 0i]#o; ;i;i;i; i]#; 0; 0i^#o; ;i;i;i; i^#; 0; 0i_#o; ;i;i;i; i_#; 0; 0i`#o; ;i;i;i; i`#; 0; 0ia#o; ;i;i;i; ia#; 0; 0ib#o; ;i;i;i; ib#; 0; 0ic#o; ;i;i;i; ic#; 0; 0id#o; ;i;i;i; id#; 0; 0ie#o; ;i;i;i; ie#; 0; 0if#o; ;i;i;i; if#; 0; 0ig#o; ;i;i;i; ig#; 0; 0ih#o; ;i;i;i; ih#; 0; 0ii#o; ;i;i;i; ii#; 0; 0ij#o; ;i;i;i; ij#; 0; 0ik#o; ;i;i;i; ik#; 0; 0il#o; ;i;i;i; il#; 0; 0im#o; ;i;i;i; im#; 0; 0in#o; ;i;i;i; in#; 0; 0io#o; ;i;i;i; io#; 0; 0ip#o; ;i;i;i; ip#; 0; 0iq#o; ;i;i;i; iq#; 0; 0ir#o; ;i;i;i; ir#; 0; 0is#o; ;i;i;i; is#; 0; 0it#o; ;i;i;i; it#; 0; 0iu#o; ;i;i;i; iu#; 0; 0iv#o; ;i;i;i; iv#; 0; 0iw#o; ;i;i;i; iw#; 0; 0ix#o; ;i;i;i; ix#; 0; 0iy#o; ;i;i;i; iy#; 0; 0iz#o; ;i;i;i; iz#; 0; 0i{#o; ;i;i;i; i{#; 0; 0i|#o; ;i;i;i; i|#; 0; 0i}#o; ;i;i;i; i}#; 0; 0i~#o; ;i;i;i; i~#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i $o; ;i;i;i; i $; 0; 0i!$o; ;i;i;i; i!$; 0; 0i"$o; ;i;i;i; i"$; 0; 0i#$o; ;i;i;i; i#$; 0; 0i$$o; ;i;i;i; i$$; 0; 0i%$o; ;i;i;i; i%$; 0; 0i&$o; ;i;i;i; i&$; 0; 0i@$o; ;i;i;i; i@$; 0; 0iA$o; ;i;i;i; iA$; 0; 0iB$o; ;i;i;i; iB$; 0; 0iC$o; ;i;i;i; iC$; 0; 0iD$o; ;i;i;i; iD$; 0; 0iE$o; ;i;i;i; iE$; 0; 0iF$o; ;i;i;i; iF$; 0; 0iG$o; ;i;i;i; iG$; 0; 0iH$o; ;i;i;i; iH$; 0; 0iI$o; ;i;i;i; iI$; 0; 0iJ$o; ;i;i;i; iJ$; 0; 0i`$o; ;i;i;i; i`$; I" circle; T; [i6ia$o; ;i;i;i; ia$; I" circle; T; [i7ib$o; ;i;i;i; ib$; I" circle; T; [i8ic$o; ;i;i;i; ic$; I" circle; T; [i9id$o; ;i;i;i; id$; I" circle; T; [i:ie$o; ;i;i;i; ie$; I" circle; T; [i;if$o; ;i;i;i; if$; I" circle; T; [iii$o; ;i;i;i; ii$; I" circle; T; [i6i5ij$o; ;i;i;i; ij$; I" circle; T; [i6i6ik$o; ;i;i;i; ik$; I" circle; T; [i6i7il$o; ;i;i;i; il$; I" circle; T; [i6i8im$o; ;i;i;i; im$; I" circle; T; [i6i9in$o; ;i;i;i; in$; I" circle; T; [i6i:io$o; ;i;i;i; io$; I" circle; T; [i6i;ip$o; ;i;i;i; ip$; I" circle; T; [i6iis$o; ;i;i;i; is$; I" circle; T; [i7i5it$o; ;i;i;i; it$; I" compat; T; [i-i6i.iu$o; ;i;i;i; iu$; I" compat; T; [i-i7i.iv$o; ;i;i;i; iv$; I" compat; T; [i-i8i.iw$o; ;i;i;i; iw$; I" compat; T; [i-i9i.ix$o; ;i;i;i; ix$; I" compat; T; [i-i:i.iy$o; ;i;i;i; iy$; I" compat; T; [i-i;i.iz$o; ;i;i;i; iz$; I" compat; T; [i-ii.i}$o; ;i;i;i; i}$; I" compat; T; [ i-i6i5i.i~$o; ;i;i;i; i~$; I" compat; T; [ i-i6i6i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6i7i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6i8i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6i9i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6i:i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6i;i.i$o; ;i;i;i; i$; I" compat; T; [ i-i6ii.i$o; ;i;i;i; i$; I" compat; T; [ i-i7i5i.i$o; ;i;i;i; i$; I" compat; T; [i6i3i$o; ;i;i;i; i$; I" compat; T; [i7i3i$o; ;i;i;i; i$; I" compat; T; [i8i3i$o; ;i;i;i; i$; I" compat; T; [i9i3i$o; ;i;i;i; i$; I" compat; T; [i:i3i$o; ;i;i;i; i$; I" compat; T; [i;i3i$o; ;i;i;i; i$; I" compat; T; [ii3i$o; ;i;i;i; i$; I" compat; T; [i6i5i3i$o; ;i;i;i; i$; I" compat; T; [i6i6i3i$o; ;i;i;i; i$; I" compat; T; [i6i7i3i$o; ;i;i;i; i$; I" compat; T; [i6i8i3i$o; ;i;i;i; i$; I" compat; T; [i6i9i3i$o; ;i;i;i; i$; I" compat; T; [i6i:i3i$o; ;i;i;i; i$; I" compat; T; [i6i;i3i$o; ;i;i;i; i$; I" compat; T; [i6ii3i$o; ;i;i;i; i$; I" compat; T; [i7i5i3i$o; ;i;i;i; i$; I" compat; T; [i-ifi.i$o; ;i;i;i; i$; I" compat; T; [i-igi.i$o; ;i;i;i; i$; I" compat; T; [i-ihi.i$o; ;i;i;i; i$; I" compat; T; [i-iii.i$o; ;i;i;i; i$; I" compat; T; [i-iji.i$o; ;i;i;i; i$; I" compat; T; [i-iki.i$o; ;i;i;i; i$; I" compat; T; [i-ili.i$o; ;i;i;i; i$; I" compat; T; [i-imi.i$o; ;i;i;i; i$; I" compat; T; [i-ini.i$o; ;i;i;i; i$; I" compat; T; [i-ioi.i$o; ;i;i;i; i$; I" compat; T; [i-ipi.i$o; ;i;i;i; i$; I" compat; T; [i-iqi.i$o; ;i;i;i; i$; I" compat; T; [i-iri.i$o; ;i;i;i; i$; I" compat; T; [i-isi.i$o; ;i;i;i; i$; I" compat; T; [i-iti.i$o; ;i;i;i; i$; I" compat; T; [i-iui.i$o; ;i;i;i; i$; I" compat; T; [i-ivi.i$o; ;i;i;i; i$; I" compat; T; [i-iwi.i$o; ;i;i;i; i$; I" compat; T; [i-ixi.i$o; ;i;i;i; i$; I" compat; T; [i-iyi.i$o; ;i;i;i; i$; I" compat; T; [i-izi.i$o; ;i;i;i; i$; I" compat; T; [i-i{i.i$o; ;i;i;i; i$; I" compat; T; [i-i|i.i$o; ;i;i;i; i$; I" compat; T; [i-i}i.i$o; ;i;i;i; i$; I" compat; T; [i-i~i.i$o; ;i;i;i; i$; I" compat; T; [i-ii.i$o; ;i;i;i$; i$; I" circle; T; [iFi$o; ;i;i;i$; i$; I" circle; T; [iGi$o; ;i;i;i$; i$; I" circle; T; [iHi$o; ;i;i;i$; i$; I" circle; T; [iIi$o; ;i;i;i$; i$; I" circle; T; [iJi$o; ;i;i;i$; i$; I" circle; T; [iKi$o; ;i;i;i$; i$; I" circle; T; [iLi$o; ;i;i;i$; i$; I" circle; T; [iMi$o; ;i;i;i$; i$; I" circle; T; [iNi$o; ;i;i;i$; i$; I" circle; T; [iOi$o; ;i;i;i$; i$; I" circle; T; [iPi$o; ;i;i;i$; i$; I" circle; T; [iQi$o; ;i;i;i$; i$; I" circle; T; [iRi$o; ;i;i;i$; i$; I" circle; T; [iSi$o; ;i;i;i$; i$; I" circle; T; [iTi$o; ;i;i;i$; i$; I" circle; T; [iUi$o; ;i;i;i$; i$; I" circle; T; [iVi$o; ;i;i;i$; i$; I" circle; T; [iWi$o; ;i;i;i$; i$; I" circle; T; [iXi$o; ;i;i;i$; i$; I" circle; T; [iYi$o; ;i;i;i$; i$; I" circle; T; [iZi$o; ;i;i;i$; i$; I" circle; T; [i[i$o; ;i;i;i$; i$; I" circle; T; [i\i$o; ;i;i;i$; i$; I" circle; T; [i]i$o; ;i;i;i$; i$; I" circle; T; [i^i$o; ;i;i;i$; i$; I" circle; T; [i_i$o; ;i;i$;i; i$; I" circle; T; [ifi$o; ;i;i$;i; i$; I" circle; T; [igi$o; ;i;i$;i; i$; I" circle; T; [ihi$o; ;i;i$;i; i$; I" circle; T; [iii$o; ;i;i$;i; i$; I" circle; T; [iji$o; ;i;i$;i; i$; I" circle; T; [iki$o; ;i;i$;i; i$; I" circle; T; [ili$o; ;i;i$;i; i$; I" circle; T; [imi$o; ;i;i$;i; i$; I" circle; T; [ini$o; ;i;i$;i; i$; I" circle; T; [ioi$o; ;i;i$;i; i$; I" circle; T; [ipi$o; ;i;i$;i; i$; I" circle; T; [iqi$o; ;i;i$;i; i$; I" circle; T; [iri$o; ;i;i$;i; i$; I" circle; T; [isi$o; ;i;i$;i; i$; I" circle; T; [iti$o; ;i;i$;i; i$; I" circle; T; [iui$o; ;i;i$;i; i$; I" circle; T; [ivi$o; ;i;i$;i; i$; I" circle; T; [iwi$o; ;i;i$;i; i$; I" circle; T; [ixi$o; ;i;i$;i; i$; I" circle; T; [iyi$o; ;i;i$;i; i$; I" circle; T; [izi$o; ;i;i$;i; i$; I" circle; T; [i{i$o; ;i;i$;i; i$; I" circle; T; [i|i$o; ;i;i$;i; i$; I" circle; T; [i}i$o; ;i;i$;i; i$; I" circle; T; [i~i$o; ;i;i$;i; i$; I" circle; T; [ii$o; ;i;i;i; i$; I" circle; T; [i5i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i %o; ;i;i;i; i %; 0; 0i %o; ;i;i;i; i %; 0; 0i %o; ;i;i;i; i %; 0; 0i %o; ;i;i;i; i %; 0; 0i %o; ;i;i;i; i %; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i %o; ;i;i;i; i %; 0; 0i!%o; ;i;i;i; i!%; 0; 0i"%o; ;i;i;i; i"%; 0; 0i#%o; ;i;i;i; i#%; 0; 0i$%o; ;i;i;i; i$%; 0; 0i%%o; ;i;i;i; i%%; 0; 0i&%o; ;i;i;i; i&%; 0; 0i'%o; ;i;i;i; i'%; 0; 0i(%o; ;i;i;i; i(%; 0; 0i)%o; ;i;i;i; i)%; 0; 0i*%o; ;i;i;i; i*%; 0; 0i+%o; ;i;i;i; i+%; 0; 0i,%o; ;i;i;i; i,%; 0; 0i-%o; ;i;i;i; i-%; 0; 0i.%o; ;i;i;i; i.%; 0; 0i/%o; ;i;i;i; i/%; 0; 0i0%o; ;i;i;i; i0%; 0; 0i1%o; ;i;i;i; i1%; 0; 0i2%o; ;i;i;i; i2%; 0; 0i3%o; ;i;i;i; i3%; 0; 0i4%o; ;i;i;i; i4%; 0; 0i5%o; ;i;i;i; i5%; 0; 0i6%o; ;i;i;i; i6%; 0; 0i7%o; ;i;i;i; i7%; 0; 0i8%o; ;i;i;i; i8%; 0; 0i9%o; ;i;i;i; i9%; 0; 0i:%o; ;i;i;i; i:%; 0; 0i;%o; ;i;i;i; i;%; 0; 0i<%o; ;i;i;i; i<%; 0; 0i=%o; ;i;i;i; i=%; 0; 0i>%o; ;i;i;i; i>%; 0; 0i?%o; ;i;i;i; i?%; 0; 0i@%o; ;i;i;i; i@%; 0; 0iA%o; ;i;i;i; iA%; 0; 0iB%o; ;i;i;i; iB%; 0; 0iC%o; ;i;i;i; iC%; 0; 0iD%o; ;i;i;i; iD%; 0; 0iE%o; ;i;i;i; iE%; 0; 0iF%o; ;i;i;i; iF%; 0; 0iG%o; ;i;i;i; iG%; 0; 0iH%o; ;i;i;i; iH%; 0; 0iI%o; ;i;i;i; iI%; 0; 0iJ%o; ;i;i;i; iJ%; 0; 0iK%o; ;i;i;i; iK%; 0; 0iL%o; ;i;i;i; iL%; 0; 0iM%o; ;i;i;i; iM%; 0; 0iN%o; ;i;i;i; iN%; 0; 0iO%o; ;i;i;i; iO%; 0; 0iP%o; ;i;i;i; iP%; 0; 0iQ%o; ;i;i;i; iQ%; 0; 0iR%o; ;i;i;i; iR%; 0; 0iS%o; ;i;i;i; iS%; 0; 0iT%o; ;i;i;i; iT%; 0; 0iU%o; ;i;i;i; iU%; 0; 0iV%o; ;i;i;i; iV%; 0; 0iW%o; ;i;i;i; iW%; 0; 0iX%o; ;i;i;i; iX%; 0; 0iY%o; ;i;i;i; iY%; 0; 0iZ%o; ;i;i;i; iZ%; 0; 0i[%o; ;i;i;i; i[%; 0; 0i\%o; ;i;i;i; i\%; 0; 0i]%o; ;i;i;i; i]%; 0; 0i^%o; ;i;i;i; i^%; 0; 0i_%o; ;i;i;i; i_%; 0; 0i`%o; ;i;i;i; i`%; 0; 0ia%o; ;i;i;i; ia%; 0; 0ib%o; ;i;i;i; ib%; 0; 0ic%o; ;i;i;i; ic%; 0; 0id%o; ;i;i;i; id%; 0; 0ie%o; ;i;i;i; ie%; 0; 0if%o; ;i;i;i; if%; 0; 0ig%o; ;i;i;i; ig%; 0; 0ih%o; ;i;i;i; ih%; 0; 0ii%o; ;i;i;i; ii%; 0; 0ij%o; ;i;i;i; ij%; 0; 0ik%o; ;i;i;i; ik%; 0; 0il%o; ;i;i;i; il%; 0; 0im%o; ;i;i;i; im%; 0; 0in%o; ;i;i;i; in%; 0; 0io%o; ;i;i;i; io%; 0; 0ip%o; ;i;i;i; ip%; 0; 0iq%o; ;i;i;i; iq%; 0; 0ir%o; ;i;i;i; ir%; 0; 0is%o; ;i;i;i; is%; 0; 0it%o; ;i;i;i; it%; 0; 0iu%o; ;i;i;i; iu%; 0; 0iv%o; ;i;i;i; iv%; 0; 0iw%o; ;i;i;i; iw%; 0; 0ix%o; ;i;i;i; ix%; 0; 0iy%o; ;i;i;i; iy%; 0; 0iz%o; ;i;i;i; iz%; 0; 0i{%o; ;i;i;i; i{%; 0; 0i|%o; ;i;i;i; i|%; 0; 0i}%o; ;i;i;i; i}%; 0; 0i~%o; ;i;i;i; i~%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i &o; ;i;i;i; i &; 0; 0i &o; ;i;i;i; i &; 0; 0i &o; ;i;i;i; i &; 0; 0i &o; ;i;i;i; i &; 0; 0i &o; ;i;i;i; i &; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i &o; ;i;i;i; i &; 0; 0i!&o; ;i;i;i; i!&; 0; 0i"&o; ;i;i;i; i"&; 0; 0i#&o; ;i;i;i; i#&; 0; 0i$&o; ;i;i;i; i$&; 0; 0i%&o; ;i;i;i; i%&; 0; 0i&&o; ;i;i;i; i&&; 0; 0i'&o; ;i;i;i; i'&; 0; 0i(&o; ;i;i;i; i(&; 0; 0i)&o; ;i;i;i; i)&; 0; 0i*&o; ;i;i;i; i*&; 0; 0i+&o; ;i;i;i; i+&; 0; 0i,&o; ;i;i;i; i,&; 0; 0i-&o; ;i;i;i; i-&; 0; 0i.&o; ;i;i;i; i.&; 0; 0i/&o; ;i;i;i; i/&; 0; 0i0&o; ;i;i;i; i0&; 0; 0i1&o; ;i;i;i; i1&; 0; 0i2&o; ;i;i;i; i2&; 0; 0i3&o; ;i;i;i; i3&; 0; 0i4&o; ;i;i;i; i4&; 0; 0i5&o; ;i;i;i; i5&; 0; 0i6&o; ;i;i;i; i6&; 0; 0i7&o; ;i;i;i; i7&; 0; 0i8&o; ;i;i;i; i8&; 0; 0i9&o; ;i;i;i; i9&; 0; 0i:&o; ;i;i;i; i:&; 0; 0i;&o; ;i;i;i; i;&; 0; 0i<&o; ;i;i;i; i<&; 0; 0i=&o; ;i;i;i; i=&; 0; 0i>&o; ;i;i;i; i>&; 0; 0i?&o; ;i;i;i; i?&; 0; 0i@&o; ;i;i;i; i@&; 0; 0iA&o; ;i;i;i; iA&; 0; 0iB&o; ;i;i;i; iB&; 0; 0iC&o; ;i;i;i; iC&; 0; 0iD&o; ;i;i;i; iD&; 0; 0iE&o; ;i;i;i; iE&; 0; 0iF&o; ;i;i;i; iF&; 0; 0iG&o; ;i;i;i; iG&; 0; 0iH&o; ;i;i;i; iH&; 0; 0iI&o; ;i;i;i; iI&; 0; 0iJ&o; ;i;i;i; iJ&; 0; 0iK&o; ;i;i;i; iK&; 0; 0iL&o; ;i;i;i; iL&; 0; 0iM&o; ;i;i;i; iM&; 0; 0iN&o; ;i;i;i; iN&; 0; 0iO&o; ;i;i;i; iO&; 0; 0iP&o; ;i;i;i; iP&; 0; 0iQ&o; ;i;i;i; iQ&; 0; 0iR&o; ;i;i;i; iR&; 0; 0iS&o; ;i;i;i; iS&; 0; 0iT&o; ;i;i;i; iT&; 0; 0iU&o; ;i;i;i; iU&; 0; 0iV&o; ;i;i;i; iV&; 0; 0iW&o; ;i;i;i; iW&; 0; 0iX&o; ;i;i;i; iX&; 0; 0iY&o; ;i;i;i; iY&; 0; 0iZ&o; ;i;i;i; iZ&; 0; 0i[&o; ;i;i;i; i[&; 0; 0i\&o; ;i;i;i; i\&; 0; 0i]&o; ;i;i;i; i]&; 0; 0i^&o; ;i;i;i; i^&; 0; 0i_&o; ;i;i;i; i_&; 0; 0i`&o; ;i;i;i; i`&; 0; 0ia&o; ;i;i;i; ia&; 0; 0ib&o; ;i;i;i; ib&; 0; 0ic&o; ;i;i;i; ic&; 0; 0id&o; ;i;i;i; id&; 0; 0ie&o; ;i;i;i; ie&; 0; 0if&o; ;i;i;i; if&; 0; 0ig&o; ;i;i;i; ig&; 0; 0ih&o; ;i;i;i; ih&; 0; 0ii&o; ;i;i;i; ii&; 0; 0ij&o; ;i;i;i; ij&; 0; 0ik&o; ;i;i;i; ik&; 0; 0il&o; ;i;i;i; il&; 0; 0im&o; ;i;i;i; im&; 0; 0in&o; ;i;i;i; in&; 0; 0io&o; ;i;i;i; io&; 0; 0ip&o; ;i;i;i; ip&; 0; 0iq&o; ;i;i;i; iq&; 0; 0ir&o; ;i;i;i; ir&; 0; 0is&o; ;i;i;i; is&; 0; 0it&o; ;i;i;i; it&; 0; 0iu&o; ;i;i;i; iu&; 0; 0iv&o; ;i;i;i; iv&; 0; 0iw&o; ;i;i;i; iw&; 0; 0ix&o; ;i;i;i; ix&; 0; 0iy&o; ;i;i;i; iy&; 0; 0iz&o; ;i;i;i; iz&; 0; 0i{&o; ;i;i;i; i{&; 0; 0i|&o; ;i;i;i; i|&; 0; 0i}&o; ;i;i;i; i}&; 0; 0i~&o; ;i;i;i; i~&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i 'o; ;i;i;i; i '; 0; 0i 'o; ;i;i;i; i '; 0; 0i 'o; ;i;i;i; i '; 0; 0i 'o; ;i;i;i; i '; 0; 0i 'o; ;i;i;i; i '; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i 'o; ;i;i;i; i '; 0; 0i!'o; ;i;i;i; i!'; 0; 0i"'o; ;i;i;i; i"'; 0; 0i#'o; ;i;i;i; i#'; 0; 0i$'o; ;i;i;i; i$'; 0; 0i%'o; ;i;i;i; i%'; 0; 0i&'o; ;i;i;i; i&'; 0; 0i''o; ;i;i;i; i''; 0; 0i('o; ;i;i;i; i('; 0; 0i)'o; ;i;i;i; i)'; 0; 0i*'o; ;i;i;i; i*'; 0; 0i+'o; ;i;i;i; i+'; 0; 0i,'o; ;i;i;i; i,'; 0; 0i-'o; ;i;i;i; i-'; 0; 0i.'o; ;i;i;i; i.'; 0; 0i/'o; ;i;i;i; i/'; 0; 0i0'o; ;i;i;i; i0'; 0; 0i1'o; ;i;i;i; i1'; 0; 0i2'o; ;i;i;i; i2'; 0; 0i3'o; ;i;i;i; i3'; 0; 0i4'o; ;i;i;i; i4'; 0; 0i5'o; ;i;i;i; i5'; 0; 0i6'o; ;i;i;i; i6'; 0; 0i7'o; ;i;i;i; i7'; 0; 0i8'o; ;i;i;i; i8'; 0; 0i9'o; ;i;i;i; i9'; 0; 0i:'o; ;i;i;i; i:'; 0; 0i;'o; ;i;i;i; i;'; 0; 0i<'o; ;i;i;i; i<'; 0; 0i='o; ;i;i;i; i='; 0; 0i>'o; ;i;i;i; i>'; 0; 0i?'o; ;i;i;i; i?'; 0; 0i@'o; ;i;i;i; i@'; 0; 0iA'o; ;i;i;i; iA'; 0; 0iB'o; ;i;i;i; iB'; 0; 0iC'o; ;i;i;i; iC'; 0; 0iD'o; ;i;i;i; iD'; 0; 0iE'o; ;i;i;i; iE'; 0; 0iF'o; ;i;i;i; iF'; 0; 0iG'o; ;i;i;i; iG'; 0; 0iH'o; ;i;i;i; iH'; 0; 0iI'o; ;i;i;i; iI'; 0; 0iJ'o; ;i;i;i; iJ'; 0; 0iK'o; ;i;i;i; iK'; 0; 0iL'o; ;i;i;i; iL'; 0; 0iM'o; ;i;i;i; iM'; 0; 0iN'o; ;i;i;i; iN'; 0; 0iO'o; ;i;i;i; iO'; 0; 0iP'o; ;i;i;i; iP'; 0; 0iQ'o; ;i;i;i; iQ'; 0; 0iR'o; ;i;i;i; iR'; 0; 0iS'o; ;i;i;i; iS'; 0; 0iT'o; ;i;i;i; iT'; 0; 0iU'o; ;i;i;i; iU'; 0; 0iV'o; ;i;i;i; iV'; 0; 0iW'o; ;i;i;i; iW'; 0; 0iX'o; ;i;i;i; iX'; 0; 0iY'o; ;i;i;i; iY'; 0; 0iZ'o; ;i;i;i; iZ'; 0; 0i['o; ;i;i;i; i['; 0; 0i\'o; ;i;i;i; i\'; 0; 0i]'o; ;i;i;i; i]'; 0; 0i^'o; ;i;i;i; i^'; 0; 0i_'o; ;i;i;i; i_'; 0; 0i`'o; ;i;i;i; i`'; 0; 0ia'o; ;i;i;i; ia'; 0; 0ib'o; ;i;i;i; ib'; 0; 0ic'o; ;i;i;i; ic'; 0; 0id'o; ;i;i;i; id'; 0; 0ie'o; ;i;i;i; ie'; 0; 0if'o; ;i;i;i; if'; 0; 0ig'o; ;i;i;i; ig'; 0; 0ih'o; ;i;i;i; ih'; 0; 0ii'o; ;i;i;i; ii'; 0; 0ij'o; ;i;i;i; ij'; 0; 0ik'o; ;i;i;i; ik'; 0; 0il'o; ;i;i;i; il'; 0; 0im'o; ;i;i;i; im'; 0; 0in'o; ;i;i;i; in'; 0; 0io'o; ;i;i;i; io'; 0; 0ip'o; ;i;i;i; ip'; 0; 0iq'o; ;i;i;i; iq'; 0; 0ir'o; ;i;i;i; ir'; 0; 0is'o; ;i;i;i; is'; 0; 0it'o; ;i;i;i; it'; 0; 0iu'o; ;i;i;i; iu'; 0; 0iv'o; ;i;i;i; iv'; 0; 0iw'o; ;i;i;i; iw'; 0; 0ix'o; ;i;i;i; ix'; 0; 0iy'o; ;i;i;i; iy'; 0; 0iz'o; ;i;i;i; iz'; 0; 0i{'o; ;i;i;i; i{'; 0; 0i|'o; ;i;i;i; i|'; 0; 0i}'o; ;i;i;i; i}'; 0; 0i~'o; ;i;i;i; i~'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i (o; ;i;i;i; i (; 0; 0i (o; ;i;i;i; i (; 0; 0i (o; ;i;i;i; i (; 0; 0i (o; ;i;i;i; i (; 0; 0i (o; ;i;i;i; i (; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i (o; ;i;i;i; i (; 0; 0i!(o; ;i;i;i; i!(; 0; 0i"(o; ;i;i;i; i"(; 0; 0i#(o; ;i;i;i; i#(; 0; 0i$(o; ;i;i;i; i$(; 0; 0i%(o; ;i;i;i; i%(; 0; 0i&(o; ;i;i;i; i&(; 0; 0i'(o; ;i;i;i; i'(; 0; 0i((o; ;i;i;i; i((; 0; 0i)(o; ;i;i;i; i)(; 0; 0i*(o; ;i;i;i; i*(; 0; 0i+(o; ;i;i;i; i+(; 0; 0i,(o; ;i;i;i; i,(; 0; 0i-(o; ;i;i;i; i-(; 0; 0i.(o; ;i;i;i; i.(; 0; 0i/(o; ;i;i;i; i/(; 0; 0i0(o; ;i;i;i; i0(; 0; 0i1(o; ;i;i;i; i1(; 0; 0i2(o; ;i;i;i; i2(; 0; 0i3(o; ;i;i;i; i3(; 0; 0i4(o; ;i;i;i; i4(; 0; 0i5(o; ;i;i;i; i5(; 0; 0i6(o; ;i;i;i; i6(; 0; 0i7(o; ;i;i;i; i7(; 0; 0i8(o; ;i;i;i; i8(; 0; 0i9(o; ;i;i;i; i9(; 0; 0i:(o; ;i;i;i; i:(; 0; 0i;(o; ;i;i;i; i;(; 0; 0i<(o; ;i;i;i; i<(; 0; 0i=(o; ;i;i;i; i=(; 0; 0i>(o; ;i;i;i; i>(; 0; 0i?(o; ;i;i;i; i?(; 0; 0i@(o; ;i;i;i; i@(; 0; 0iA(o; ;i;i;i; iA(; 0; 0iB(o; ;i;i;i; iB(; 0; 0iC(o; ;i;i;i; iC(; 0; 0iD(o; ;i;i;i; iD(; 0; 0iE(o; ;i;i;i; iE(; 0; 0iF(o; ;i;i;i; iF(; 0; 0iG(o; ;i;i;i; iG(; 0; 0iH(o; ;i;i;i; iH(; 0; 0iI(o; ;i;i;i; iI(; 0; 0iJ(o; ;i;i;i; iJ(; 0; 0iK(o; ;i;i;i; iK(; 0; 0iL(o; ;i;i;i; iL(; 0; 0iM(o; ;i;i;i; iM(; 0; 0iN(o; ;i;i;i; iN(; 0; 0iO(o; ;i;i;i; iO(; 0; 0iP(o; ;i;i;i; iP(; 0; 0iQ(o; ;i;i;i; iQ(; 0; 0iR(o; ;i;i;i; iR(; 0; 0iS(o; ;i;i;i; iS(; 0; 0iT(o; ;i;i;i; iT(; 0; 0iU(o; ;i;i;i; iU(; 0; 0iV(o; ;i;i;i; iV(; 0; 0iW(o; ;i;i;i; iW(; 0; 0iX(o; ;i;i;i; iX(; 0; 0iY(o; ;i;i;i; iY(; 0; 0iZ(o; ;i;i;i; iZ(; 0; 0i[(o; ;i;i;i; i[(; 0; 0i\(o; ;i;i;i; i\(; 0; 0i](o; ;i;i;i; i](; 0; 0i^(o; ;i;i;i; i^(; 0; 0i_(o; ;i;i;i; i_(; 0; 0i`(o; ;i;i;i; i`(; 0; 0ia(o; ;i;i;i; ia(; 0; 0ib(o; ;i;i;i; ib(; 0; 0ic(o; ;i;i;i; ic(; 0; 0id(o; ;i;i;i; id(; 0; 0ie(o; ;i;i;i; ie(; 0; 0if(o; ;i;i;i; if(; 0; 0ig(o; ;i;i;i; ig(; 0; 0ih(o; ;i;i;i; ih(; 0; 0ii(o; ;i;i;i; ii(; 0; 0ij(o; ;i;i;i; ij(; 0; 0ik(o; ;i;i;i; ik(; 0; 0il(o; ;i;i;i; il(; 0; 0im(o; ;i;i;i; im(; 0; 0in(o; ;i;i;i; in(; 0; 0io(o; ;i;i;i; io(; 0; 0ip(o; ;i;i;i; ip(; 0; 0iq(o; ;i;i;i; iq(; 0; 0ir(o; ;i;i;i; ir(; 0; 0is(o; ;i;i;i; is(; 0; 0it(o; ;i;i;i; it(; 0; 0iu(o; ;i;i;i; iu(; 0; 0iv(o; ;i;i;i; iv(; 0; 0iw(o; ;i;i;i; iw(; 0; 0ix(o; ;i;i;i; ix(; 0; 0iy(o; ;i;i;i; iy(; 0; 0iz(o; ;i;i;i; iz(; 0; 0i{(o; ;i;i;i; i{(; 0; 0i|(o; ;i;i;i; i|(; 0; 0i}(o; ;i;i;i; i}(; 0; 0i~(o; ;i;i;i; i~(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i )o; ;i;i;i; i ); 0; 0i )o; ;i;i;i; i ); 0; 0i )o; ;i;i;i; i ); 0; 0i )o; ;i;i;i; i ); 0; 0i )o; ;i;i;i; i ); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i )o; ;i;i;i; i ); 0; 0i!)o; ;i;i;i; i!); 0; 0i")o; ;i;i;i; i"); 0; 0i#)o; ;i;i;i; i#); 0; 0i$)o; ;i;i;i; i$); 0; 0i%)o; ;i;i;i; i%); 0; 0i&)o; ;i;i;i; i&); 0; 0i')o; ;i;i;i; i'); 0; 0i()o; ;i;i;i; i(); 0; 0i))o; ;i;i;i; i)); 0; 0i*)o; ;i;i;i; i*); 0; 0i+)o; ;i;i;i; i+); 0; 0i,)o; ;i;i;i; i,); 0; 0i-)o; ;i;i;i; i-); 0; 0i.)o; ;i;i;i; i.); 0; 0i/)o; ;i;i;i; i/); 0; 0i0)o; ;i;i;i; i0); 0; 0i1)o; ;i;i;i; i1); 0; 0i2)o; ;i;i;i; i2); 0; 0i3)o; ;i;i;i; i3); 0; 0i4)o; ;i;i;i; i4); 0; 0i5)o; ;i;i;i; i5); 0; 0i6)o; ;i;i;i; i6); 0; 0i7)o; ;i;i;i; i7); 0; 0i8)o; ;i;i;i; i8); 0; 0i9)o; ;i;i;i; i9); 0; 0i:)o; ;i;i;i; i:); 0; 0i;)o; ;i;i;i; i;); 0; 0i<)o; ;i;i;i; i<); 0; 0i=)o; ;i;i;i; i=); 0; 0i>)o; ;i;i;i; i>); 0; 0i?)o; ;i;i;i; i?); 0; 0i@)o; ;i;i;i; i@); 0; 0iA)o; ;i;i;i; iA); 0; 0iB)o; ;i;i;i; iB); 0; 0iC)o; ;i;i;i; iC); 0; 0iD)o; ;i;i;i; iD); 0; 0iE)o; ;i;i;i; iE); 0; 0iF)o; ;i;i;i; iF); 0; 0iG)o; ;i;i;i; iG); 0; 0iH)o; ;i;i;i; iH); 0; 0iI)o; ;i;i;i; iI); 0; 0iJ)o; ;i;i;i; iJ); 0; 0iK)o; ;i;i;i; iK); 0; 0iL)o; ;i;i;i; iL); 0; 0iM)o; ;i;i;i; iM); 0; 0iN)o; ;i;i;i; iN); 0; 0iO)o; ;i;i;i; iO); 0; 0iP)o; ;i;i;i; iP); 0; 0iQ)o; ;i;i;i; iQ); 0; 0iR)o; ;i;i;i; iR); 0; 0iS)o; ;i;i;i; iS); 0; 0iT)o; ;i;i;i; iT); 0; 0iU)o; ;i;i;i; iU); 0; 0iV)o; ;i;i;i; iV); 0; 0iW)o; ;i;i;i; iW); 0; 0iX)o; ;i;i;i; iX); 0; 0iY)o; ;i;i;i; iY); 0; 0iZ)o; ;i;i;i; iZ); 0; 0i[)o; ;i;i;i; i[); 0; 0i\)o; ;i;i;i; i\); 0; 0i])o; ;i;i;i; i]); 0; 0i^)o; ;i;i;i; i^); 0; 0i_)o; ;i;i;i; i_); 0; 0i`)o; ;i;i;i; i`); 0; 0ia)o; ;i;i;i; ia); 0; 0ib)o; ;i;i;i; ib); 0; 0ic)o; ;i;i;i; ic); 0; 0id)o; ;i;i;i; id); 0; 0ie)o; ;i;i;i; ie); 0; 0if)o; ;i;i;i; if); 0; 0ig)o; ;i;i;i; ig); 0; 0ih)o; ;i;i;i; ih); 0; 0ii)o; ;i;i;i; ii); 0; 0ij)o; ;i;i;i; ij); 0; 0ik)o; ;i;i;i; ik); 0; 0il)o; ;i;i;i; il); 0; 0im)o; ;i;i;i; im); 0; 0in)o; ;i;i;i; in); 0; 0io)o; ;i;i;i; io); 0; 0ip)o; ;i;i;i; ip); 0; 0iq)o; ;i;i;i; iq); 0; 0ir)o; ;i;i;i; ir); 0; 0is)o; ;i;i;i; is); 0; 0it)o; ;i;i;i; it); 0; 0iu)o; ;i;i;i; iu); 0; 0iv)o; ;i;i;i; iv); 0; 0iw)o; ;i;i;i; iw); 0; 0ix)o; ;i;i;i; ix); 0; 0iy)o; ;i;i;i; iy); 0; 0iz)o; ;i;i;i; iz); 0; 0i{)o; ;i;i;i; i{); 0; 0i|)o; ;i;i;i; i|); 0; 0i})o; ;i;i;i; i}); 0; 0i~)o; ;i;i;i; i~); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i *o; ;i;i;i; i *; 0; 0i *o; ;i;i;i; i *; 0; 0i *o; ;i;i;i; i *; 0; 0i *o; ;i;i;i; i *; I" compat; T; [ i+"i+"i+"i+"i *o; ;i;i;i; i *; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i *o; ;i;i;i; i *; 0; 0i!*o; ;i;i;i; i!*; 0; 0i"*o; ;i;i;i; i"*; 0; 0i#*o; ;i;i;i; i#*; 0; 0i$*o; ;i;i;i; i$*; 0; 0i%*o; ;i;i;i; i%*; 0; 0i&*o; ;i;i;i; i&*; 0; 0i'*o; ;i;i;i; i'*; 0; 0i(*o; ;i;i;i; i(*; 0; 0i)*o; ;i;i;i; i)*; 0; 0i**o; ;i;i;i; i**; 0; 0i+*o; ;i;i;i; i+*; 0; 0i,*o; ;i;i;i; i,*; 0; 0i-*o; ;i;i;i; i-*; 0; 0i.*o; ;i;i;i; i.*; 0; 0i/*o; ;i;i;i; i/*; 0; 0i0*o; ;i;i;i; i0*; 0; 0i1*o; ;i;i;i; i1*; 0; 0i2*o; ;i;i;i; i2*; 0; 0i3*o; ;i;i;i; i3*; 0; 0i4*o; ;i;i;i; i4*; 0; 0i5*o; ;i;i;i; i5*; 0; 0i6*o; ;i;i;i; i6*; 0; 0i7*o; ;i;i;i; i7*; 0; 0i8*o; ;i;i;i; i8*; 0; 0i9*o; ;i;i;i; i9*; 0; 0i:*o; ;i;i;i; i:*; 0; 0i;*o; ;i;i;i; i;*; 0; 0i<*o; ;i;i;i; i<*; 0; 0i=*o; ;i;i;i; i=*; 0; 0i>*o; ;i;i;i; i>*; 0; 0i?*o; ;i;i;i; i?*; 0; 0i@*o; ;i;i;i; i@*; 0; 0iA*o; ;i;i;i; iA*; 0; 0iB*o; ;i;i;i; iB*; 0; 0iC*o; ;i;i;i; iC*; 0; 0iD*o; ;i;i;i; iD*; 0; 0iE*o; ;i;i;i; iE*; 0; 0iF*o; ;i;i;i; iF*; 0; 0iG*o; ;i;i;i; iG*; 0; 0iH*o; ;i;i;i; iH*; 0; 0iI*o; ;i;i;i; iI*; 0; 0iJ*o; ;i;i;i; iJ*; 0; 0iK*o; ;i;i;i; iK*; 0; 0iL*o; ;i;i;i; iL*; 0; 0iM*o; ;i;i;i; iM*; 0; 0iN*o; ;i;i;i; iN*; 0; 0iO*o; ;i;i;i; iO*; 0; 0iP*o; ;i;i;i; iP*; 0; 0iQ*o; ;i;i;i; iQ*; 0; 0iR*o; ;i;i;i; iR*; 0; 0iS*o; ;i;i;i; iS*; 0; 0iT*o; ;i;i;i; iT*; 0; 0iU*o; ;i;i;i; iU*; 0; 0iV*o; ;i;i;i; iV*; 0; 0iW*o; ;i;i;i; iW*; 0; 0iX*o; ;i;i;i; iX*; 0; 0iY*o; ;i;i;i; iY*; 0; 0iZ*o; ;i;i;i; iZ*; 0; 0i[*o; ;i;i;i; i[*; 0; 0i\*o; ;i;i;i; i\*; 0; 0i]*o; ;i;i;i; i]*; 0; 0i^*o; ;i;i;i; i^*; 0; 0i_*o; ;i;i;i; i_*; 0; 0i`*o; ;i;i;i; i`*; 0; 0ia*o; ;i;i;i; ia*; 0; 0ib*o; ;i;i;i; ib*; 0; 0ic*o; ;i;i;i; ic*; 0; 0id*o; ;i;i;i; id*; 0; 0ie*o; ;i;i;i; ie*; 0; 0if*o; ;i;i;i; if*; 0; 0ig*o; ;i;i;i; ig*; 0; 0ih*o; ;i;i;i; ih*; 0; 0ii*o; ;i;i;i; ii*; 0; 0ij*o; ;i;i;i; ij*; 0; 0ik*o; ;i;i;i; ik*; 0; 0il*o; ;i;i;i; il*; 0; 0im*o; ;i;i;i; im*; 0; 0in*o; ;i;i;i; in*; 0; 0io*o; ;i;i;i; io*; 0; 0ip*o; ;i;i;i; ip*; 0; 0iq*o; ;i;i;i; iq*; 0; 0ir*o; ;i;i;i; ir*; 0; 0is*o; ;i;i;i; is*; 0; 0it*o; ;i;i;i; it*; I" compat; T; [i?i?iBiu*o; ;i;i;i; iu*; I" compat; T; [iBiBiv*o; ;i;i;i; iv*; I" compat; T; [iBiBiBiw*o; ;i;i;i; iw*; 0; 0ix*o; ;i;i;i; ix*; 0; 0iy*o; ;i;i;i; iy*; 0; 0iz*o; ;i;i;i; iz*; 0; 0i{*o; ;i;i;i; i{*; 0; 0i|*o; ;i;i;i; i|*; 0; 0i}*o; ;i;i;i; i}*; 0; 0i~*o; ;i;i;i; i~*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; [i*i8i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i +o; ;i;i;i; i +; 0; 0i +o; ;i;i;i; i +; 0; 0i +o; ;i;i;i; i +; 0; 0i +o; ;i;i;i; i +; 0; 0i +o; ;i;i;i; i +; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i +o; ;i;i;i; i +; 0; 0i!+o; ;i;i;i; i!+; 0; 0i"+o; ;i;i;i; i"+; 0; 0i#+o; ;i;i;i; i#+; 0; 0i$+o; ;i;i;i; i$+; 0; 0i%+o; ;i;i;i; i%+; 0; 0i&+o; ;i;i;i; i&+; 0; 0i'+o; ;i;i;i; i'+; 0; 0i(+o; ;i;i;i; i(+; 0; 0i)+o; ;i;i;i; i)+; 0; 0i*+o; ;i;i;i; i*+; 0; 0i++o; ;i;i;i; i++; 0; 0i,+o; ;i;i;i; i,+; 0; 0i-+o; ;i;i;i; i-+; 0; 0i.+o; ;i;i;i; i.+; 0; 0i/+o; ;i;i;i; i/+; 0; 0i0+o; ;i;i;i; i0+; 0; 0i1+o; ;i;i;i; i1+; 0; 0i2+o; ;i;i;i; i2+; 0; 0i3+o; ;i;i;i; i3+; 0; 0i4+o; ;i;i;i; i4+; 0; 0i5+o; ;i;i;i; i5+; 0; 0i6+o; ;i;i;i; i6+; 0; 0i7+o; ;i;i;i; i7+; 0; 0i8+o; ;i;i;i; i8+; 0; 0i9+o; ;i;i;i; i9+; 0; 0i:+o; ;i;i;i; i:+; 0; 0i;+o; ;i;i;i; i;+; 0; 0i<+o; ;i;i;i; i<+; 0; 0i=+o; ;i;i;i; i=+; 0; 0i>+o; ;i;i;i; i>+; 0; 0i?+o; ;i;i;i; i?+; 0; 0i@+o; ;i;i;i; i@+; 0; 0iA+o; ;i;i;i; iA+; 0; 0iB+o; ;i;i;i; iB+; 0; 0iC+o; ;i;i;i; iC+; 0; 0iD+o; ;i;i;i; iD+; 0; 0iE+o; ;i;i;i; iE+; 0; 0iF+o; ;i;i;i; iF+; 0; 0iG+o; ;i;i;i; iG+; 0; 0iH+o; ;i;i;i; iH+; 0; 0iI+o; ;i;i;i; iI+; 0; 0iJ+o; ;i;i;i; iJ+; 0; 0iK+o; ;i;i;i; iK+; 0; 0iL+o; ;i;i;i; iL+; 0; 0iM+o; ;i;i;i; iM+; 0; 0iN+o; ;i;i;i; iN+; 0; 0iO+o; ;i;i;i; iO+; 0; 0iP+o; ;i;i;i; iP+; 0; 0iQ+o; ;i;i;i; iQ+; 0; 0iR+o; ;i;i;i; iR+; 0; 0iS+o; ;i;i;i; iS+; 0; 0iT+o; ;i;i;i; iT+; 0; 0iU+o; ;i;i;i; iU+; 0; 0iV+o; ;i;i;i; iV+; 0; 0iW+o; ;i;i;i; iW+; 0; 0iX+o; ;i;i;i; iX+; 0; 0iY+o; ;i;i;i; iY+; 0; 0iZ+o; ;i;i;i; iZ+; 0; 0i[+o; ;i;i;i; i[+; 0; 0i\+o; ;i;i;i; i\+; 0; 0i]+o; ;i;i;i; i]+; 0; 0i^+o; ;i;i;i; i^+; 0; 0i_+o; ;i;i;i; i_+; 0; 0i`+o; ;i;i;i; i`+; 0; 0ia+o; ;i;i;i; ia+; 0; 0ib+o; ;i;i;i; ib+; 0; 0ic+o; ;i;i;i; ic+; 0; 0id+o; ;i;i;i; id+; 0; 0ie+o; ;i;i;i; ie+; 0; 0if+o; ;i;i;i; if+; 0; 0ig+o; ;i;i;i; ig+; 0; 0ih+o; ;i;i;i; ih+; 0; 0ii+o; ;i;i;i; ii+; 0; 0ij+o; ;i;i;i; ij+; 0; 0ik+o; ;i;i;i; ik+; 0; 0il+o; ;i;i;i; il+; 0; 0im+o; ;i;i;i; im+; 0; 0in+o; ;i;i;i; in+; 0; 0io+o; ;i;i;i; io+; 0; 0ip+o; ;i;i;i; ip+; 0; 0iq+o; ;i;i;i; iq+; 0; 0ir+o; ;i;i;i; ir+; 0; 0is+o; ;i;i;i; is+; 0; 0iv+o; ;i;i;i; iv+; 0; 0iw+o; ;i;i;i; iw+; 0; 0ix+o; ;i;i;i; ix+; 0; 0iy+o; ;i;i;i; iy+; 0; 0iz+o; ;i;i;i; iz+; 0; 0i{+o; ;i;i;i; i{+; 0; 0i|+o; ;i;i;i; i|+; 0; 0i}+o; ;i;i;i; i}+; 0; 0i~+o; ;i;i;i; i~+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i0,; i,; 0; 0i,o; ;i;i;i1,; i,; 0; 0i,o; ;i;i;i2,; i,; 0; 0i,o; ;i;i;i3,; i,; 0; 0i,o; ;i;i;i4,; i,; 0; 0i,o; ;i;i;i5,; i,; 0; 0i,o; ;i;i;i6,; i,; 0; 0i,o; ;i;i;i7,; i,; 0; 0i,o; ;i;i;i8,; i,; 0; 0i ,o; ;i;i;i9,; i ,; 0; 0i ,o; ;i;i;i:,; i ,; 0; 0i ,o; ;i;i;i;,; i ,; 0; 0i ,o; ;i;i;i<,; i ,; 0; 0i ,o; ;i;i;i=,; i ,; 0; 0i,o; ;i;i;i>,; i,; 0; 0i,o; ;i;i;i?,; i,; 0; 0i,o; ;i;i;i@,; i,; 0; 0i,o; ;i;i;iA,; i,; 0; 0i,o; ;i;i;iB,; i,; 0; 0i,o; ;i;i;iC,; i,; 0; 0i,o; ;i;i;iD,; i,; 0; 0i,o; ;i;i;iE,; i,; 0; 0i,o; ;i;i;iF,; i,; 0; 0i,o; ;i;i;iG,; i,; 0; 0i,o; ;i;i;iH,; i,; 0; 0i,o; ;i;i;iI,; i,; 0; 0i,o; ;i;i;iJ,; i,; 0; 0i,o; ;i;i;iK,; i,; 0; 0i,o; ;i;i;iL,; i,; 0; 0i,o; ;i;i;iM,; i,; 0; 0i,o; ;i;i;iN,; i,; 0; 0i,o; ;i;i;iO,; i,; 0; 0i ,o; ;i;i;iP,; i ,; 0; 0i!,o; ;i;i;iQ,; i!,; 0; 0i",o; ;i;i;iR,; i",; 0; 0i#,o; ;i;i;iS,; i#,; 0; 0i$,o; ;i;i;iT,; i$,; 0; 0i%,o; ;i;i;iU,; i%,; 0; 0i&,o; ;i;i;iV,; i&,; 0; 0i',o; ;i;i;iW,; i',; 0; 0i(,o; ;i;i;iX,; i(,; 0; 0i),o; ;i;i;iY,; i),; 0; 0i*,o; ;i;i;iZ,; i*,; 0; 0i+,o; ;i;i;i[,; i+,; 0; 0i,,o; ;i;i;i\,; i,,; 0; 0i-,o; ;i;i;i],; i-,; 0; 0i.,o; ;i;i;i^,; i.,; 0; 0i0,o; ;i;i,;i; i0,; 0; 0i1,o; ;i;i,;i; i1,; 0; 0i2,o; ;i;i,;i; i2,; 0; 0i3,o; ;i;i,;i; i3,; 0; 0i4,o; ;i;i,;i; i4,; 0; 0i5,o; ;i;i,;i; i5,; 0; 0i6,o; ;i;i,;i; i6,; 0; 0i7,o; ;i;i,;i; i7,; 0; 0i8,o; ;i;i,;i; i8,; 0; 0i9,o; ;i;i ,;i; i9,; 0; 0i:,o; ;i;i ,;i; i:,; 0; 0i;,o; ;i;i ,;i; i;,; 0; 0i<,o; ;i;i ,;i; i<,; 0; 0i=,o; ;i;i ,;i; i=,; 0; 0i>,o; ;i;i,;i; i>,; 0; 0i?,o; ;i;i,;i; i?,; 0; 0i@,o; ;i;i,;i; i@,; 0; 0iA,o; ;i;i,;i; iA,; 0; 0iB,o; ;i;i,;i; iB,; 0; 0iC,o; ;i;i,;i; iC,; 0; 0iD,o; ;i;i,;i; iD,; 0; 0iE,o; ;i;i,;i; iE,; 0; 0iF,o; ;i;i,;i; iF,; 0; 0iG,o; ;i;i,;i; iG,; 0; 0iH,o; ;i;i,;i; iH,; 0; 0iI,o; ;i;i,;i; iI,; 0; 0iJ,o; ;i;i,;i; iJ,; 0; 0iK,o; ;i;i,;i; iK,; 0; 0iL,o; ;i;i,;i; iL,; 0; 0iM,o; ;i;i,;i; iM,; 0; 0iN,o; ;i;i,;i; iN,; 0; 0iO,o; ;i;i,;i; iO,; 0; 0iP,o; ;i;i ,;i; iP,; 0; 0iQ,o; ;i;i!,;i; iQ,; 0; 0iR,o; ;i;i",;i; iR,; 0; 0iS,o; ;i;i#,;i; iS,; 0; 0iT,o; ;i;i$,;i; iT,; 0; 0iU,o; ;i;i%,;i; iU,; 0; 0iV,o; ;i;i&,;i; iV,; 0; 0iW,o; ;i;i',;i; iW,; 0; 0iX,o; ;i;i(,;i; iX,; 0; 0iY,o; ;i;i),;i; iY,; 0; 0iZ,o; ;i;i*,;i; iZ,; 0; 0i[,o; ;i;i+,;i; i[,; 0; 0i\,o; ;i;i,,;i; i\,; 0; 0i],o; ;i;i-,;i; i],; 0; 0i^,o; ;i;i.,;i; i^,; 0; 0i`,o; ;i;i;ia,; i`,; 0; 0ia,o; ;i;i`,;i; ia,; 0; 0ib,o; ;i;i;ik; ib,; 0; 0ic,o; ;i;i;i}; ic,; 0; 0id,o; ;i;i;i}; id,; 0; 0ie,o; ;i;i:;i; ie,; 0; 0if,o; ;i;i>;i; if,; 0; 0ig,o; ;i;i;ih,; ig,; 0; 0ih,o; ;i;ig,;i; ih,; 0; 0ii,o; ;i;i;ij,; ii,; 0; 0ij,o; ;i;ii,;i; ij,; 0; 0ik,o; ;i;i;il,; ik,; 0; 0il,o; ;i;ik,;i; il,; 0; 0im,o; ;i;i;iQ; im,; 0; 0in,o; ;i;i;iq; in,; 0; 0io,o; ;i;i;iP; io,; 0; 0ip,o; ;i;i;iR; ip,; 0; 0iq,o; ;i;i;i; iq,; 0; 0ir,o; ;i;i;is,; ir,; 0; 0is,o; ;i;ir,;i; is,; 0; 0it,o; ;i;i;i; it,; 0; 0iu,o; ;i;i;iv,; iu,; 0; 0iv,o; ;i;iu,;i; iv,; 0; 0iw,o; ;i;i;i; iw,; 0; 0ix,o; ;i;i;i; ix,; 0; 0iy,o; ;i;i;i; iy,; 0; 0iz,o; ;i;i;i; iz,; 0; 0i{,o; ;i;i;i; i{,; 0; 0i|,o; ;i;i;i; i|,; I"sub; T; [ioi},o; ;i;i;i; i},; I" super; T; [i[i~,o; ;i;i;i?; i~,; 0; 0i,o; ;i;i;i@; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i,; i,; 0; 0i,o; ;i;i,;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i -o; ;i;i;i; i -; 0; 0i -o; ;i;i;i; i -; 0; 0i -o; ;i;i;i; i -; 0; 0i -o; ;i;i;i; i -; 0; 0i -o; ;i;i;i; i -; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i -o; ;i;i;i; i -; 0; 0i!-o; ;i;i;i; i!-; 0; 0i"-o; ;i;i;i; i"-; 0; 0i#-o; ;i;i;i; i#-; 0; 0i$-o; ;i;i;i; i$-; 0; 0i%-o; ;i;i;i; i%-; 0; 0i'-o; ;i;i;i; i'-; 0; 0i--o; ;i;i;i; i--; 0; 0i0-o; ;i;i;i; i0-; 0; 0i1-o; ;i;i;i; i1-; 0; 0i2-o; ;i;i;i; i2-; 0; 0i3-o; ;i;i;i; i3-; 0; 0i4-o; ;i;i;i; i4-; 0; 0i5-o; ;i;i;i; i5-; 0; 0i6-o; ;i;i;i; i6-; 0; 0i7-o; ;i;i;i; i7-; 0; 0i8-o; ;i;i;i; i8-; 0; 0i9-o; ;i;i;i; i9-; 0; 0i:-o; ;i;i;i; i:-; 0; 0i;-o; ;i;i;i; i;-; 0; 0i<-o; ;i;i;i; i<-; 0; 0i=-o; ;i;i;i; i=-; 0; 0i>-o; ;i;i;i; i>-; 0; 0i?-o; ;i;i;i; i?-; 0; 0i@-o; ;i;i;i; i@-; 0; 0iA-o; ;i;i;i; iA-; 0; 0iB-o; ;i;i;i; iB-; 0; 0iC-o; ;i;i;i; iC-; 0; 0iD-o; ;i;i;i; iD-; 0; 0iE-o; ;i;i;i; iE-; 0; 0iF-o; ;i;i;i; iF-; 0; 0iG-o; ;i;i;i; iG-; 0; 0iH-o; ;i;i;i; iH-; 0; 0iI-o; ;i;i;i; iI-; 0; 0iJ-o; ;i;i;i; iJ-; 0; 0iK-o; ;i;i;i; iK-; 0; 0iL-o; ;i;i;i; iL-; 0; 0iM-o; ;i;i;i; iM-; 0; 0iN-o; ;i;i;i; iN-; 0; 0iO-o; ;i;i;i; iO-; 0; 0iP-o; ;i;i;i; iP-; 0; 0iQ-o; ;i;i;i; iQ-; 0; 0iR-o; ;i;i;i; iR-; 0; 0iS-o; ;i;i;i; iS-; 0; 0iT-o; ;i;i;i; iT-; 0; 0iU-o; ;i;i;i; iU-; 0; 0iV-o; ;i;i;i; iV-; 0; 0iW-o; ;i;i;i; iW-; 0; 0iX-o; ;i;i;i; iX-; 0; 0iY-o; ;i;i;i; iY-; 0; 0iZ-o; ;i;i;i; iZ-; 0; 0i[-o; ;i;i;i; i[-; 0; 0i\-o; ;i;i;i; i\-; 0; 0i]-o; ;i;i;i; i]-; 0; 0i^-o; ;i;i;i; i^-; 0; 0i_-o; ;i;i;i; i_-; 0; 0i`-o; ;i;i;i; i`-; 0; 0ia-o; ;i;i;i; ia-; 0; 0ib-o; ;i;i;i; ib-; 0; 0ic-o; ;i;i;i; ic-; 0; 0id-o; ;i;i;i; id-; 0; 0ie-o; ;i;i;i; ie-; 0; 0if-o; ;i;i;i; if-; 0; 0ig-o; ;i;i;i; ig-; 0; 0io-o; ;i;i;i; io-; I" super; T; [ia-ip-o; ;i;i;i; ip-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i .o; ;i;i;i; i .; 0; 0i .o; ;i;i;i; i .; 0; 0i .o; ;i;i;i; i .; 0; 0i .o; ;i;i;i; i .; 0; 0i .o; ;i;i;i; i .; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i .o; ;i;i;i; i .; 0; 0i!.o; ;i;i;i; i!.; 0; 0i".o; ;i;i;i; i".; 0; 0i#.o; ;i;i;i; i#.; 0; 0i$.o; ;i;i;i; i$.; 0; 0i%.o; ;i;i;i; i%.; 0; 0i&.o; ;i;i;i; i&.; 0; 0i'.o; ;i;i;i; i'.; 0; 0i(.o; ;i;i;i; i(.; 0; 0i).o; ;i;i;i; i).; 0; 0i*.o; ;i;i;i; i*.; 0; 0i+.o; ;i;i;i; i+.; 0; 0i,.o; ;i;i;i; i,.; 0; 0i-.o; ;i;i;i; i-.; 0; 0i..o; ;i;i;i; i..; 0; 0i/.o; ;i;i;i; i/.; 0; 0i0.o; ;i;i;i; i0.; 0; 0i1.o; ;i;i;i; i1.; 0; 0i2.o; ;i;i;i; i2.; 0; 0i3.o; ;i;i;i; i3.; 0; 0i4.o; ;i;i;i; i4.; 0; 0i5.o; ;i;i;i; i5.; 0; 0i6.o; ;i;i;i; i6.; 0; 0i7.o; ;i;i;i; i7.; 0; 0i8.o; ;i;i;i; i8.; 0; 0i9.o; ;i;i;i; i9.; 0; 0i:.o; ;i;i;i; i:.; 0; 0i;.o; ;i;i;i; i;.; 0; 0i<.o; ;i;i;i; i<.; 0; 0i=.o; ;i;i;i; i=.; 0; 0i>.o; ;i;i;i; i>.; 0; 0i?.o; ;i;i;i; i?.; 0; 0i@.o; ;i;i;i; i@.; 0; 0iA.o; ;i;i;i; iA.; 0; 0iB.o; ;i;i;i; iB.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; I" compat; T; [iki.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; 0; 0i.o; ;i;i;i; i.; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iNi/o; ;i;i;i; i/; I" compat; T; [i(Ni/o; ;i;i;i; i/; I" compat; T; [i6Ni/o; ;i;i;i; i/; I" compat; T; [i?Ni/o; ;i;i;i; i/; I" compat; T; [iYNi/o; ;i;i;i; i/; I" compat; T; [iNi/o; ;i;i;i; i/; I" compat; T; [iNi/o; ;i;i;i; i/; I" compat; T; [iNi/o; ;i;i;i; i/; I" compat; T; [iNi /o; ;i;i;i; i /; I" compat; T; [i?Qi /o; ;i;i;i; i /; I" compat; T; [ieQi /o; ;i;i;i; i /; I" compat; T; [ikQi /o; ;i;i;i; i /; I" compat; T; [iQi /o; ;i;i;i; i /; I" compat; T; [iQi/o; ;i;i;i; i/; I" compat; T; [iQi/o; ;i;i;i; i/; I" compat; T; [iQi/o; ;i;i;i; i/; I" compat; T; [iQi/o; ;i;i;i; i/; I" compat; T; [iRi/o; ;i;i;i; i/; I" compat; T; [iRi/o; ;i;i;i; i/; I" compat; T; [iRi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [i8Si/o; ;i;i;i; i/; I" compat; T; [iASi/o; ;i;i;i; i/; I" compat; T; [i\Si/o; ;i;i;i; i/; I" compat; T; [iiSi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [iSi/o; ;i;i;i; i/; I" compat; T; [iVi/o; ;i;i;i; i/; I" compat; T; [iWi /o; ;i;i;i; i /; I" compat; T; [iXi!/o; ;i;i;i; i!/; I" compat; T; [iYi"/o; ;i;i;i; i"/; I" compat; T; [i Yi#/o; ;i;i;i; i#/; I" compat; T; [iYi$/o; ;i;i;i; i$/; I" compat; T; [i'Yi%/o; ;i;i;i; i%/; I" compat; T; [isYi&/o; ;i;i;i; i&/; I" compat; T; [iP[i'/o; ;i;i;i; i'/; I" compat; T; [i[i(/o; ;i;i;i; i(/; I" compat; T; [i[i)/o; ;i;i;i; i)/; I" compat; T; [i\i*/o; ;i;i;i; i*/; I" compat; T; [i"\i+/o; ;i;i;i; i+/; I" compat; T; [i8\i,/o; ;i;i;i; i,/; I" compat; T; [in\i-/o; ;i;i;i; i-/; I" compat; T; [iq\i./o; ;i;i;i; i./; I" compat; T; [i]i//o; ;i;i;i; i//; I" compat; T; [i]i0/o; ;i;i;i; i0/; I" compat; T; [i]i1/o; ;i;i;i; i1/; I" compat; T; [i]i2/o; ;i;i;i; i2/; I" compat; T; [ir^i3/o; ;i;i;i; i3/; I" compat; T; [iz^i4/o; ;i;i;i; i4/; I" compat; T; [i^i5/o; ;i;i;i; i5/; I" compat; T; [i^i6/o; ;i;i;i; i6/; I" compat; T; [i^i7/o; ;i;i;i; i7/; I" compat; T; [i _i8/o; ;i;i;i; i8/; I" compat; T; [i_i9/o; ;i;i;i; i9/; I" compat; T; [iP_i:/o; ;i;i;i; i:/; I" compat; T; [ia_i;/o; ;i;i;i; i;/; I" compat; T; [is_i/o; ;i;i;i; i>/; I" compat; T; [i6bi?/o; ;i;i;i; i?/; I" compat; T; [iKbi@/o; ;i;i;i; i@/; I" compat; T; [i/eiA/o; ;i;i;i; iA/; I" compat; T; [i4eiB/o; ;i;i;i; iB/; I" compat; T; [ieiC/o; ;i;i;i; iC/; I" compat; T; [ieiD/o; ;i;i;i; iD/; I" compat; T; [ieiE/o; ;i;i;i; iE/; I" compat; T; [ieiF/o; ;i;i;i; iF/; I" compat; T; [ieiG/o; ;i;i;i; iG/; I" compat; T; [ieiH/o; ;i;i;i; iH/; I" compat; T; [ifiI/o; ;i;i;i; iI/; I" compat; T; [igiJ/o; ;i;i;i; iJ/; I" compat; T; [i(giK/o; ;i;i;i; iK/; I" compat; T; [i kiL/o; ;i;i;i; iL/; I" compat; T; [ibkiM/o; ;i;i;i; iM/; I" compat; T; [iykiN/o; ;i;i;i; iN/; I" compat; T; [ikiO/o; ;i;i;i; iO/; I" compat; T; [ikiP/o; ;i;i;i; iP/; I" compat; T; [ikiQ/o; ;i;i;i; iQ/; I" compat; T; [ikiR/o; ;i;i;i; iR/; I" compat; T; [iliS/o; ;i;i;i; iS/; I" compat; T; [iliT/o; ;i;i;i; iT/; I" compat; T; [i4liU/o; ;i;i;i; iU/; I" compat; T; [ikpiV/o; ;i;i;i; iV/; I" compat; T; [i*riW/o; ;i;i;i; iW/; I" compat; T; [i6riX/o; ;i;i;i; iX/; I" compat; T; [i;riY/o; ;i;i;i; iY/; I" compat; T; [i?riZ/o; ;i;i;i; iZ/; I" compat; T; [iGri[/o; ;i;i;i; i[/; I" compat; T; [iYri\/o; ;i;i;i; i\/; I" compat; T; [i[ri]/o; ;i;i;i; i]/; I" compat; T; [iri^/o; ;i;i;i; i^/; I" compat; T; [isi_/o; ;i;i;i; i_/; I" compat; T; [isi`/o; ;i;i;i; i`/; I" compat; T; [itia/o; ;i;i;i; ia/; I" compat; T; [itib/o; ;i;i;i; ib/; I" compat; T; [iuic/o; ;i;i;i; ic/; I" compat; T; [iuid/o; ;i;i;i; id/; I" compat; T; [i(uie/o; ;i;i;i; ie/; I" compat; T; [i0uif/o; ;i;i;i; if/; I" compat; T; [iuig/o; ;i;i;i; ig/; I" compat; T; [iuih/o; ;i;i;i; ih/; I" compat; T; [ivvii/o; ;i;i;i; ii/; I" compat; T; [i}vij/o; ;i;i;i; ij/; I" compat; T; [ivik/o; ;i;i;i; ik/; I" compat; T; [ivil/o; ;i;i;i; il/; I" compat; T; [ivim/o; ;i;i;i; im/; I" compat; T; [iwin/o; ;i;i;i; in/; I" compat; T; [iwio/o; ;i;i;i; io/; I" compat; T; [iwip/o; ;i;i;i; ip/; I" compat; T; [i:yiq/o; ;i;i;i; iq/; I" compat; T; [iyir/o; ;i;i;i; ir/; I" compat; T; [iyis/o; ;i;i;i; is/; I" compat; T; [itzit/o; ;i;i;i; it/; I" compat; T; [iziu/o; ;i;i;i; iu/; I" compat; T; [iziv/o; ;i;i;i; iv/; I" compat; T; [is|iw/o; ;i;i;i; iw/; I" compat; T; [i|ix/o; ;i;i;i; ix/; I" compat; T; [i6iy/o; ;i;i;i; iy/; I" compat; T; [iQiz/o; ;i;i;i; iz/; I" compat; T; [ii{/o; ;i;i;i; i{/; I" compat; T; [ii|/o; ;i;i;i; i|/; I" compat; T; [ii}/o; ;i;i;i; i}/; I" compat; T; [i i~/o; ;i;i;i; i~/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [i3i/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [i i/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ini/o; ;i;i;i; i/; I" compat; T; [iri/o; ;i;i;i; i/; I" compat; T; [ixi/o; ;i;i;i; i/; I" compat; T; [iMi/o; ;i;i;i; i/; I" compat; T; [iki/o; ;i;i;i; i/; I" compat; T; [i@i/o; ;i;i;i; i/; I" compat; T; [iLi/o; ;i;i;i; i/; I" compat; T; [ici/o; ;i;i;i; i/; I" compat; T; [i~i/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [i҉i/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [i7i/o; ;i;i;i; i/; I" compat; T; [iFi/o; ;i;i;i; i/; I" compat; T; [iUi/o; ;i;i;i; i/; I" compat; T; [ixi/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [idi/o; ;i;i;i; i/; I" compat; T; [ipi/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iʎi/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iIi/o; ;i;i;i; i/; I" compat; T; [iƑi/o; ;i;i;i; i/; I" compat; T; [ȋi/o; ;i;i;i; i/; I" compat; T; [iёi/o; ;i;i;i; i/; I" compat; T; [iwi/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iQi/o; ;i;i;i; i/; I" compat; T; [i^i/o; ;i;i;i; i/; I" compat; T; [ibi/o; ;i;i;i; i/; I" compat; T; [iii/o; ;i;i;i; i/; I" compat; T; [i˗i/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iۘi/o; ;i;i;i; i/; I" compat; T; [iߘi/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [ii/o; ;i;i;i; i/; I" compat; T; [iؚi/o; ;i;i;i; i/; I" compat; T; [iߚi/o; ;i;i;i; i/; I" compat; T; [i%i/o; ;i;i;i; i/; I" compat; T; [i/i/o; ;i;i;i; i/; I" compat; T; [i2i/o; ;i;i;i; i/; I" compat; T; [i0o; ;i;i;i; i>0; 0; 0i?0o; ;i;i;i; i?0; 0; 0iA0o; ;i;i;i; iA0; 0; 0iB0o; ;i;i;i; iB0; 0; 0iC0o; ;i;i;i; iC0; 0; 0iD0o; ;i;i;i; iD0; 0; 0iE0o; ;i;i;i; iE0; 0; 0iF0o; ;i;i;i; iF0; 0; 0iG0o; ;i;i;i; iG0; 0; 0iH0o; ;i;i;i; iH0; 0; 0iI0o; ;i;i;i; iI0; 0; 0iJ0o; ;i;i;i; iJ0; 0; 0iK0o; ;i;i;i; iK0; 0; 0iL0o; ;i;i;i; iL0; 0; [iK0i0iM0o; ;i;i;i; iM0; 0; 0iN0o; ;i;i;i; iN0; 0; [iM0i0iO0o; ;i;i;i; iO0; 0; 0iP0o; ;i;i;i; iP0; 0; [iO0i0iQ0o; ;i;i;i; iQ0; 0; 0iR0o; ;i;i;i; iR0; 0; [iQ0i0iS0o; ;i;i;i; iS0; 0; 0iT0o; ;i;i;i; iT0; 0; [iS0i0iU0o; ;i;i;i; iU0; 0; 0iV0o; ;i;i;i; iV0; 0; [iU0i0iW0o; ;i;i;i; iW0; 0; 0iX0o; ;i;i;i; iX0; 0; [iW0i0iY0o; ;i;i;i; iY0; 0; 0iZ0o; ;i;i;i; iZ0; 0; [iY0i0i[0o; ;i;i;i; i[0; 0; 0i\0o; ;i;i;i; i\0; 0; [i[0i0i]0o; ;i;i;i; i]0; 0; 0i^0o; ;i;i;i; i^0; 0; [i]0i0i_0o; ;i;i;i; i_0; 0; 0i`0o; ;i;i;i; i`0; 0; [i_0i0ia0o; ;i;i;i; ia0; 0; 0ib0o; ;i;i;i; ib0; 0; [ia0i0ic0o; ;i;i;i; ic0; 0; 0id0o; ;i;i;i; id0; 0; 0ie0o; ;i;i;i; ie0; 0; [id0i0if0o; ;i;i;i; if0; 0; 0ig0o; ;i;i;i; ig0; 0; [if0i0ih0o; ;i;i;i; ih0; 0; 0ii0o; ;i;i;i; ii0; 0; [ih0i0ij0o; ;i;i;i; ij0; 0; 0ik0o; ;i;i;i; ik0; 0; 0il0o; ;i;i;i; il0; 0; 0im0o; ;i;i;i; im0; 0; 0in0o; ;i;i;i; in0; 0; 0io0o; ;i;i;i; io0; 0; 0ip0o; ;i;i;i; ip0; 0; [io0i0iq0o; ;i;i;i; iq0; 0; [io0i0ir0o; ;i;i;i; ir0; 0; 0is0o; ;i;i;i; is0; 0; [ir0i0it0o; ;i;i;i; it0; 0; [ir0i0iu0o; ;i;i;i; iu0; 0; 0iv0o; ;i;i;i; iv0; 0; [iu0i0iw0o; ;i;i;i; iw0; 0; [iu0i0ix0o; ;i;i;i; ix0; 0; 0iy0o; ;i;i;i; iy0; 0; [ix0i0iz0o; ;i;i;i; iz0; 0; [ix0i0i{0o; ;i;i;i; i{0; 0; 0i|0o; ;i;i;i; i|0; 0; [i{0i0i}0o; ;i;i;i; i}0; 0; [i{0i0i~0o; ;i;i;i; i~0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [iF0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i ;i;i; i0; 0; 0i0o; ;i ;i;i; i0; 0; 0i0o; ;i;i;i; i0; I" compat; T; [i%i0i0o; ;i;i;i; i0; I" compat; T; [i%i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; I" vertical; T; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; [i0i0i0o; ;i;i;i; i0; I" vertical; T; [i0i0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i!1o; ;i;i;i; i!1; 0; 0i"1o; ;i;i;i; i"1; 0; 0i#1o; ;i;i;i; i#1; 0; 0i$1o; ;i;i;i; i$1; 0; 0i%1o; ;i;i;i; i%1; 0; 0i&1o; ;i;i;i; i&1; 0; 0i'1o; ;i;i;i; i'1; 0; 0i(1o; ;i;i;i; i(1; 0; 0i)1o; ;i;i;i; i)1; 0; 0i*1o; ;i;i;i; i*1; 0; 0i+1o; ;i;i;i; i+1; 0; 0i,1o; ;i;i;i; i,1; 0; 0i-1o; ;i;i;i; i-1; 0; 0i11o; ;i;i;i; i11; I" compat; T; [ii21o; ;i;i;i; i21; I" compat; T; [ii31o; ;i;i;i; i31; I" compat; T; [ii41o; ;i;i;i; i41; I" compat; T; [ii51o; ;i;i;i; i51; I" compat; T; [ii61o; ;i;i;i; i61; I" compat; T; [ii71o; ;i;i;i; i71; I" compat; T; [ii81o; ;i;i;i; i81; I" compat; T; [ii91o; ;i;i;i; i91; I" compat; T; [ii:1o; ;i;i;i; i:1; I" compat; T; [ii;1o; ;i;i;i; i;1; I" compat; T; [ii<1o; ;i;i;i; i<1; I" compat; T; [ii=1o; ;i;i;i; i=1; I" compat; T; [ii>1o; ;i;i;i; i>1; I" compat; T; [ii?1o; ;i;i;i; i?1; I" compat; T; [ii@1o; ;i;i;i; i@1; I" compat; T; [iiA1o; ;i;i;i; iA1; I" compat; T; [iiB1o; ;i;i;i; iB1; I" compat; T; [iiC1o; ;i;i;i; iC1; I" compat; T; [iiD1o; ;i;i;i; iD1; I" compat; T; [i!iE1o; ;i;i;i; iE1; I" compat; T; [i iF1o; ;i;i;i; iF1; I" compat; T; [i iG1o; ;i;i;i; iG1; I" compat; T; [i iH1o; ;i;i;i; iH1; I" compat; T; [i iI1o; ;i;i;i; iI1; I" compat; T; [i iJ1o; ;i;i;i; iJ1; I" compat; T; [iiK1o; ;i;i;i; iK1; I" compat; T; [iiL1o; ;i;i;i; iL1; I" compat; T; [iiM1o; ;i;i;i; iM1; I" compat; T; [iiN1o; ;i;i;i; iN1; I" compat; T; [iiO1o; ;i;i;i; iO1; I" compat; T; [iaiP1o; ;i;i;i; iP1; I" compat; T; [ibiQ1o; ;i;i;i; iQ1; I" compat; T; [iciR1o; ;i;i;i; iR1; I" compat; T; [idiS1o; ;i;i;i; iS1; I" compat; T; [ieiT1o; ;i;i;i; iT1; I" compat; T; [ifiU1o; ;i;i;i; iU1; I" compat; T; [igiV1o; ;i;i;i; iV1; I" compat; T; [ihiW1o; ;i;i;i; iW1; I" compat; T; [iiiX1o; ;i;i;i; iX1; I" compat; T; [ijiY1o; ;i;i;i; iY1; I" compat; T; [ikiZ1o; ;i;i;i; iZ1; I" compat; T; [ili[1o; ;i;i;i; i[1; I" compat; T; [imi\1o; ;i;i;i; i\1; I" compat; T; [ini]1o; ;i;i;i; i]1; I" compat; T; [ioi^1o; ;i;i;i; i^1; I" compat; T; [ipi_1o; ;i;i;i; i_1; I" compat; T; [iqi`1o; ;i;i;i; i`1; I" compat; T; [iria1o; ;i;i;i; ia1; I" compat; T; [isib1o; ;i;i;i; ib1; I" compat; T; [itic1o; ;i;i;i; ic1; I" compat; T; [iuid1o; ;i;i;i; id1; I" compat; T; [i`ie1o; ;i;i;i; ie1; I" compat; T; [iif1o; ;i;i;i; if1; I" compat; T; [iig1o; ;i;i;i; ig1; I" compat; T; [iih1o; ;i;i;i; ih1; I" compat; T; [iii1o; ;i;i;i; ii1; I" compat; T; [iij1o; ;i;i;i; ij1; I" compat; T; [iik1o; ;i;i;i; ik1; I" compat; T; [iil1o; ;i;i;i; il1; I" compat; T; [iim1o; ;i;i;i; im1; I" compat; T; [iin1o; ;i;i;i; in1; I" compat; T; [iio1o; ;i;i;i; io1; I" compat; T; [iip1o; ;i;i;i; ip1; I" compat; T; [iiq1o; ;i;i;i; iq1; I" compat; T; [iir1o; ;i;i;i; ir1; I" compat; T; [iis1o; ;i;i;i; is1; I" compat; T; [i it1o; ;i;i;i; it1; I" compat; T; [i"iu1o; ;i;i;i; iu1; I" compat; T; [i#iv1o; ;i;i;i; iv1; I" compat; T; [i'iw1o; ;i;i;i; iw1; I" compat; T; [i)ix1o; ;i;i;i; ix1; I" compat; T; [i+iy1o; ;i;i;i; iy1; I" compat; T; [i,iz1o; ;i;i;i; iz1; I" compat; T; [i-i{1o; ;i;i;i; i{1; I" compat; T; [i.i|1o; ;i;i;i; i|1; I" compat; T; [i/i}1o; ;i;i;i; i}1; I" compat; T; [i2i~1o; ;i;i;i; i~1; I" compat; T; [i6i1o; ;i;i;i; i1; I" compat; T; [i@i1o; ;i;i;i; i1; I" compat; T; [iGi1o; ;i;i;i; i1; I" compat; T; [iLi1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [iWi1o; ;i;i;i; i1; I" compat; T; [iXi1o; ;i;i;i; i1; I" compat; T; [iYi1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; I" compat; T; [ii1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; I" super; T; [iNi1o; ;i;i;i; i1; I" super; T; [iNi1o; ;i;i;i; i1; I" super; T; [i Ni1o; ;i;i;i; i1; I" super; T; [iVi1o; ;i;i;i; i1; I" super; T; [i Ni1o; ;i;i;i; i1; I" super; T; [i-Ni1o; ;i;i;i; i1; I" super; T; [i Ni1o; ;i;i;i; i1; I" super; T; [i2ui1o; ;i;i;i; i1; I" super; T; [iYNi1o; ;i;i;i; i1; I" super; T; [iNi1o; ;i;i;i; i1; I" super; T; [iNi1o; ;i;i;i; i1; I" super; T; [i)Yi1o; ;i;i;i; i1; I" super; T; [i0Wi1o; ;i;i;i; i1; I" super; T; [iNi1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [i-i i.i2o; ;i;i;i; i2; I" compat; T; [i-i i.i2o; ;i;i;i; i2; I" compat; T; [i-i i.i 2o; ;i;i;i; i 2; I" compat; T; [i-ii.i 2o; ;i;i;i; i 2; I" compat; T; [i-ii.i 2o; ;i;i;i; i 2; I" compat; T; [i-ii.i 2o; ;i;i;i; i 2; I" compat; T; [i-ii.i 2o; ;i;i;i; i 2; I" compat; T; [i-ii.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-i iai.i2o; ;i;i;i; i2; I" compat; T; [ i-i iai.i2o; ;i;i;i; i2; I" compat; T; [ i-i iai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-iiai.i2o; ;i;i;i; i2; I" compat; T; [ i-i ini.i2o; ;i;i;i; i2; I" compat; T; [ i-i iii ieii.i2o; ;i;i;i; i2; I" compat; T; [ i-i iiiini.i 2o; ;i;i;i; i 2; I" compat; T; [i-iNi.i!2o; ;i;i;i; i!2; I" compat; T; [i-iNi.i"2o; ;i;i;i; i"2; I" compat; T; [i-i Ni.i#2o; ;i;i;i; i#2; I" compat; T; [i-iVi.i$2o; ;i;i;i; i$2; I" compat; T; [i-iNi.i%2o; ;i;i;i; i%2; I" compat; T; [i-imQi.i&2o; ;i;i;i; i&2; I" compat; T; [i-iNi.i'2o; ;i;i;i; i'2; I" compat; T; [i-ikQi.i(2o; ;i;i;i; i(2; I" compat; T; [i-i]Ni.i)2o; ;i;i;i; i)2; I" compat; T; [i-iASi.i*2o; ;i;i;i; i*2; I" compat; T; [i-igi.i+2o; ;i;i;i; i+2; I" compat; T; [i-ikpi.i,2o; ;i;i;i; i,2; I" compat; T; [i-i4li.i-2o; ;i;i;i; i-2; I" compat; T; [i-i(gi.i.2o; ;i;i;i; i.2; I" compat; T; [i-iёi.i/2o; ;i;i;i; i/2; I" compat; T; [i-iWi.i02o; ;i;i;i; i02; I" compat; T; [i-iei.i12o; ;i;i;i; i12; I" compat; T; [i-i*hi.i22o; ;i;i;i; i22; I" compat; T; [i-i gi.i32o; ;i;i;i; i32; I" compat; T; [i-i>yi.i42o; ;i;i;i; i42; I" compat; T; [i-i Ti.i52o; ;i;i;i; i52; I" compat; T; [i-iyri.i62o; ;i;i;i; i62; I" compat; T; [i-ii.i72o; ;i;i;i; i72; I" compat; T; [i-i]yi.i82o; ;i;i;i; i82; I" compat; T; [i-iRi.i92o; ;i;i;i; i92; I" compat; T; [i-iNi.i:2o; ;i;i;i; i:2; I" compat; T; [i-i|Ti.i;2o; ;i;i;i; i;2; I" compat; T; [i-if[i.i<2o; ;i;i;i; i<2; I" compat; T; [i-ivi.i=2o; ;i;i;i; i=2; I" compat; T; [i-iOi.i>2o; ;i;i;i; i>2; I" compat; T; [i-inji.i?2o; ;i;i;i; i?2; I" compat; T; [i-iTSi.i@2o; ;i;i;i; i@2; I" compat; T; [i-imyi.iA2o; ;i;i;i; iA2; I" compat; T; [i-iOi.iB2o; ;i;i;i; iB2; I" compat; T; [i-ii.iC2o; ;i;i;i; iC2; I" compat; T; [i-ii.iD2o; ;i;i;i; iD2; I" circle; T; [iOUiE2o; ;i;i;i; iE2; I" circle; T; [i|^iF2o; ;i;i;i; iF2; I" circle; T; [ieiG2o; ;i;i;i; iG2; I" circle; T; [i{iH2o; ;i;i;i; iH2; 0; 0iI2o; ;i;i;i; iI2; 0; 0iJ2o; ;i;i;i; iJ2; 0; 0iK2o; ;i;i;i; iK2; 0; 0iL2o; ;i;i;i; iL2; 0; 0iM2o; ;i;i;i; iM2; 0; 0iN2o; ;i;i;i; iN2; 0; 0iO2o; ;i;i;i; iO2; 0; 0iP2o; ;i;i;i; iP2; I" square; T; [iUiYiJiQ2o; ;i;i;i; iQ2; I" circle; T; [i7i6iR2o; ;i;i;i; iR2; I" circle; T; [i7i7iS2o; ;i;i;i; iS2; I" circle; T; [i7i8iT2o; ;i;i;i; iT2; I" circle; T; [i7i9iU2o; ;i;i;i; iU2; I" circle; T; [i7i:iV2o; ;i;i;i; iV2; I" circle; T; [i7i;iW2o; ;i;i;i; iW2; I" circle; T; [i7iiZ2o; ;i;i;i; iZ2; I" circle; T; [i8i5i[2o; ;i;i;i; i[2; I" circle; T; [i8i6i\2o; ;i;i;i; i\2; I" circle; T; [i8i7i]2o; ;i;i;i; i]2; I" circle; T; [i8i8i^2o; ;i;i;i; i^2; I" circle; T; [i8i9i_2o; ;i;i;i; i_2; I" circle; T; [i8i:i`2o; ;i;i;i; i`2; I" circle; T; [iia2o; ;i;i;i; ia2; I" circle; T; [iib2o; ;i;i;i; ib2; I" circle; T; [iic2o; ;i;i;i; ic2; I" circle; T; [iid2o; ;i;i;i; id2; I" circle; T; [iie2o; ;i;i;i; ie2; I" circle; T; [iif2o; ;i;i;i; if2; I" circle; T; [i ig2o; ;i;i;i; ig2; I" circle; T; [i ih2o; ;i;i;i; ih2; I" circle; T; [i ii2o; ;i;i;i; ii2; I" circle; T; [iij2o; ;i;i;i; ij2; I" circle; T; [iik2o; ;i;i;i; ik2; I" circle; T; [iil2o; ;i;i;i; il2; I" circle; T; [iim2o; ;i;i;i; im2; I" circle; T; [iin2o; ;i;i;i; in2; I" circle; T; [iiaio2o; ;i;i;i; io2; I" circle; T; [iiaip2o; ;i;i;i; ip2; I" circle; T; [iiaiq2o; ;i;i;i; iq2; I" circle; T; [iiair2o; ;i;i;i; ir2; I" circle; T; [iiais2o; ;i;i;i; is2; I" circle; T; [iiait2o; ;i;i;i; it2; I" circle; T; [i iaiu2o; ;i;i;i; iu2; I" circle; T; [i iaiv2o; ;i;i;i; iv2; I" circle; T; [i iaiw2o; ;i;i;i; iw2; I" circle; T; [iiaix2o; ;i;i;i; ix2; I" circle; T; [iiaiy2o; ;i;i;i; iy2; I" circle; T; [iiaiz2o; ;i;i;i; iz2; I" circle; T; [iiai{2o; ;i;i;i; i{2; I" circle; T; [iiai|2o; ;i;i;i; i|2; I" circle; T; [ iiaiiiii}2o; ;i;i;i; i}2; I" circle; T; [ i ini iti~2o; ;i;i;i; i~2; I" circle; T; [i ini2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; I" circle; T; [iNi2o; ;i;i;i; i2; I" circle; T; [iNi2o; ;i;i;i; i2; I" circle; T; [i Ni2o; ;i;i;i; i2; I" circle; T; [iVi2o; ;i;i;i; i2; I" circle; T; [iNi2o; ;i;i;i; i2; I" circle; T; [imQi2o; ;i;i;i; i2; I" circle; T; [iNi2o; ;i;i;i; i2; I" circle; T; [ikQi2o; ;i;i;i; i2; I" circle; T; [i]Ni2o; ;i;i;i; i2; I" circle; T; [iASi2o; ;i;i;i; i2; I" circle; T; [igi2o; ;i;i;i; i2; I" circle; T; [ikpi2o; ;i;i;i; i2; I" circle; T; [i4li2o; ;i;i;i; i2; I" circle; T; [i(gi2o; ;i;i;i; i2; I" circle; T; [iёi2o; ;i;i;i; i2; I" circle; T; [iWi2o; ;i;i;i; i2; I" circle; T; [iei2o; ;i;i;i; i2; I" circle; T; [i*hi2o; ;i;i;i; i2; I" circle; T; [i gi2o; ;i;i;i; i2; I" circle; T; [i>yi2o; ;i;i;i; i2; I" circle; T; [i Ti2o; ;i;i;i; i2; I" circle; T; [iyri2o; ;i;i;i; i2; I" circle; T; [ii2o; ;i;i;i; i2; I" circle; T; [i]yi2o; ;i;i;i; i2; I" circle; T; [iRi2o; ;i;i;i; i2; I" circle; T; [iyi2o; ;i;i;i; i2; I" circle; T; [i7ui2o; ;i;i;i; i2; I" circle; T; [isYi2o; ;i;i;i; i2; I" circle; T; [iii2o; ;i;i;i; i2; I" circle; T; [i*Qi2o; ;i;i;i; i2; I" circle; T; [ipSi2o; ;i;i;i; i2; I" circle; T; [ili2o; ;i;i;i; i2; I" circle; T; [ii2o; ;i;i;i; i2; I" circle; T; [iOi2o; ;i;i;i; i2; I" circle; T; [iQi2o; ;i;i;i; i2; I" circle; T; [icki2o; ;i;i;i; i2; I" circle; T; [i Ni2o; ;i;i;i; i2; I" circle; T; [i-Ni2o; ;i;i;i; i2; I" circle; T; [i Ni2o; ;i;i;i; i2; I" circle; T; [i]i2o; ;i;i;i; i2; I" circle; T; [iSi2o; ;i;i;i; i2; I" circle; T; [i;Si2o; ;i;i;i; i2; I" circle; T; [i[i2o; ;i;i;i; i2; I" circle; T; [if[i2o; ;i;i;i; i2; I" circle; T; [ivi2o; ;i;i;i; i2; I" circle; T; [iOi2o; ;i;i;i; i2; I" circle; T; [inji2o; ;i;i;i; i2; I" circle; T; [iTSi2o; ;i;i;i; i2; I" circle; T; [iYi2o; ;i;i;i; i2; I" circle; T; [i8i;i2o; ;i;i;i; i2; I" circle; T; [i8ii2o; ;i;i;i; i2; I" circle; T; [i9i5i2o; ;i;i;i; i2; I" circle; T; [i9i6i2o; ;i;i;i; i2; I" circle; T; [i9i7i2o; ;i;i;i; i2; I" circle; T; [i9i8i2o; ;i;i;i; i2; I" circle; T; [i9i9i2o; ;i;i;i; i2; I" circle; T; [i9i:i2o; ;i;i;i; i2; I" circle; T; [i9i;i2o; ;i;i;i; i2; I" circle; T; [i9ii2o; ;i;i;i; i2; I" circle; T; [i:i5i2o; ;i;i;i; i2; I" compat; T; [i6igi2o; ;i;i;i; i2; I" compat; T; [i7igi2o; ;i;i;i; i2; I" compat; T; [i8igi2o; ;i;i;i; i2; I" compat; T; [i9igi2o; ;i;i;i; i2; I" compat; T; [i:igi2o; ;i;i;i; i2; I" compat; T; [i;igi2o; ;i;i;i; i2; I" compat; T; [iigi2o; ;i;i;i; i2; I" compat; T; [i6i5igi2o; ;i;i;i; i2; I" compat; T; [i6i6igi2o; ;i;i;i; i2; I" compat; T; [i6i7igi2o; ;i;i;i; i2; I" square; T; [iMili2o; ;i;i;i; i2; I" square; T; [ijiwili2o; ;i;i;i; i2; I" square; T; [iji[i2o; ;i;i;i; i2; I" square; T; [iQiYiIi2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i2o; ;i;i;i; i2; I" circle; T; [i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [ i0i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [i0i0i0i3o; ;i;i;i; i3; I" square; T; [ i0i0i0i0i 3o; ;i;i;i; i 3; I" square; T; [ i0i0i0i0i0i!3o; ;i;i;i; i!3; I" square; T; [ i0i0i0i0i"3o; ;i;i;i; i"3; I" square; T; [i0i0i0i#3o; ;i;i;i; i#3; I" square; T; [i0i0i0i$3o; ;i;i;i; i$3; I" square; T; [i0i0i0i%3o; ;i;i;i; i%3; I" square; T; [i0i0i&3o; ;i;i;i; i&3; I" square; T; [i0i0i'3o; ;i;i;i; i'3; I" square; T; [i0i0i(3o; ;i;i;i; i(3; I" square; T; [i0i0i)3o; ;i;i;i; i)3; I" square; T; [i0i0i0i*3o; ;i;i;i; i*3; I" square; T; [i0i0i0i+3o; ;i;i;i; i+3; I" square; T; [ i0i0i0i0i0i,3o; ;i;i;i; i,3; I" square; T; [i0i0i0i-3o; ;i;i;i; i-3; I" square; T; [ i0i0i0i0i.3o; ;i;i;i; i.3; I" square; T; [ i0i0i0i0i0i/3o; ;i;i;i; i/3; I" square; T; [i0i0i0i03o; ;i;i;i; i03; I" square; T; [i0i0i13o; ;i;i;i; i13; I" square; T; [i0i0i23o; ;i;i;i; i23; I" square; T; [ i0i0i0i0i0i33o; ;i;i;i; i33; I" square; T; [ i0i0i0i0i43o; ;i;i;i; i43; I" square; T; [ i0i0i0i0i0i53o; ;i;i;i; i53; I" square; T; [i0i0i0i63o; ;i;i;i; i63; I" square; T; [ i0i0i0i0i0i73o; ;i;i;i; i73; I" square; T; [i0i0i83o; ;i;i;i; i83; I" square; T; [i0i0i0i93o; ;i;i;i; i93; I" square; T; [i0i0i0i:3o; ;i;i;i; i:3; I" square; T; [i0i0i0i;3o; ;i;i;i; i;3; I" square; T; [i0i0i0i<3o; ;i;i;i; i<3; I" square; T; [i0i0i0i=3o; ;i;i;i; i=3; I" square; T; [ i0i0i0i0i>3o; ;i;i;i; i>3; I" square; T; [i0i0i0i?3o; ;i;i;i; i?3; I" square; T; [i0i0i@3o; ;i;i;i; i@3; I" square; T; [i0i0i0iA3o; ;i;i;i; iA3; I" square; T; [i0i0i0iB3o; ;i;i;i; iB3; I" square; T; [i0i0i0iC3o; ;i;i;i; iC3; I" square; T; [ i0i0i0i0iD3o; ;i;i;i; iD3; I" square; T; [i0i0i0iE3o; ;i;i;i; iE3; I" square; T; [i0i0i0iF3o; ;i;i;i; iF3; I" square; T; [i0i0i0iG3o; ;i;i;i; iG3; I" square; T; [ i0i0i0i0i0iH3o; ;i;i;i; iH3; I" square; T; [ i0i0i0i0iI3o; ;i;i;i; iI3; I" square; T; [i0i0iJ3o; ;i;i;i; iJ3; I" square; T; [ i0i0i0i0i0iK3o; ;i;i;i; iK3; I" square; T; [i0i0iL3o; ;i;i;i; iL3; I" square; T; [ i0i0i0i0iM3o; ;i;i;i; iM3; I" square; T; [ i0i0i0i0iN3o; ;i;i;i; iN3; I" square; T; [i0i0i0iO3o; ;i;i;i; iO3; I" square; T; [i0i0i0iP3o; ;i;i;i; iP3; I" square; T; [i0i0i0iQ3o; ;i;i;i; iQ3; I" square; T; [ i0i0i0i0iR3o; ;i;i;i; iR3; I" square; T; [i0i0iS3o; ;i;i;i; iS3; I" square; T; [i0i0i0iT3o; ;i;i;i; iT3; I" square; T; [ i0i0i0i0iU3o; ;i;i;i; iU3; I" square; T; [i0i0iV3o; ;i;i;i; iV3; I" square; T; [ i0i0i0i0i0iW3o; ;i;i;i; iW3; I" square; T; [i0i0i0iX3o; ;i;i;i; iX3; I" compat; T; [i5ipiY3o; ;i;i;i; iY3; I" compat; T; [i6ipiZ3o; ;i;i;i; iZ3; I" compat; T; [i7ipi[3o; ;i;i;i; i[3; I" compat; T; [i8ipi\3o; ;i;i;i; i\3; I" compat; T; [i9ipi]3o; ;i;i;i; i]3; I" compat; T; [i:ipi^3o; ;i;i;i; i^3; I" compat; T; [i;ipi_3o; ;i;i;i; i_3; I" compat; T; [iipib3o; ;i;i;i; ib3; I" compat; T; [i6i5ipic3o; ;i;i;i; ic3; I" compat; T; [i6i6ipid3o; ;i;i;i; id3; I" compat; T; [i6i7ipie3o; ;i;i;i; ie3; I" compat; T; [i6i8ipif3o; ;i;i;i; if3; I" compat; T; [i6i9ipig3o; ;i;i;i; ig3; I" compat; T; [i6i:ipih3o; ;i;i;i; ih3; I" compat; T; [i6i;ipii3o; ;i;i;i; ii3; I" compat; T; [i6iipil3o; ;i;i;i; il3; I" compat; T; [i7i5ipim3o; ;i;i;i; im3; I" compat; T; [i7i6ipin3o; ;i;i;i; in3; I" compat; T; [i7i7ipio3o; ;i;i;i; io3; I" compat; T; [i7i8ipip3o; ;i;i;i; ip3; I" compat; T; [i7i9ipiq3o; ;i;i;i; iq3; I" square; T; [imiUifir3o; ;i;i;i; ir3; I" square; T; [iiifis3o; ;i;i;i; is3; I" square; T; [iFiZit3o; ;i;i;i; it3; I" square; T; [igifiwiu3o; ;i;i;i; iu3; I" square; T; [iti[iv3o; ;i;i;i; iv3; I" square; T; [iuihiw3o; ;i;i;i; iw3; I" square; T; [iiirix3o; ;i;i;i; ix3; I" square; T; [iiiriiy3o; ;i;i;i; iy3; I" square; T; [iiiriiz3o; ;i;i;i; iz3; I" square; T; [iNiZi{3o; ;i;i;i; i{3; I" square; T; [is^ibi|3o; ;i;i;i; i|3; I" square; T; [i-fiTi}3o; ;i;i;i; i}3; I" square; T; [i'Yicki~3o; ;i;i;i; i~3; I" square; T; [ifili3o; ;i;i;i; i3; I" square; T; [ i*hi_iOi>yi3o; ;i;i;i; i3; I" square; T; [iuiFi3o; ;i;i;i; i3; I" square; T; [isiFi3o; ;i;i;i; i3; I" square; T; [iiFi3o; ;i;i;i; i3; I" square; T; [iriFi3o; ;i;i;i; i3; I" square; T; [ipiFi3o; ;i;i;i; i3; I" square; T; [iPiGi3o; ;i;i;i; i3; I" square; T; [iRiGi3o; ;i;i;i; i3; I" square; T; [iLiGi3o; ;i;i;i; i3; I" square; T; [ihifiqi3o; ;i;i;i; i3; I" square; T; [ ipihifiqi3o; ;i;i;i; i3; I" square; T; [iuiKi3o; ;i;i;i; i3; I" square; T; [isiKi3o; ;i;i;i; i3; I" square; T; [iiKi3o; ;i;i;i; i3; I" square; T; [iili3o; ;i;i;i; i3; I" square; T; [irili3o; ;i;i;i; i3; I" square; T; [ipili3o; ;i;i;i; i3; I" square; T; [iMii3o; ;i;i;i; i3; I" square; T; [ipiMii3o; ;i;i;i; i3; I" square; T; [iRiMii3o; ;i;i;i; i3; I" square; T; [iLiMii3o; ;i;i;i; i3; I" square; T; [iYiMii3o; ;i;i;i; i3; I" square; T; [ii!i3o; ;i;i;i; i3; I" square; T; [iri!i3o; ;i;i;i; i3; I" square; T; [iii!i3o; ;i;i;i; i3; I" square; T; [ipi!i3o; ;i;i;i; i3; I" square; T; [ikiri3o; ;i;i;i; i3; I" square; T; [isiri3o; ;i;i;i; i3; I" square; T; [iiri3o; ;i;i;i; i3; I" square; T; [iriri3o; ;i;i;i; i3; I" square; T; [ihiri3o; ;i;i;i; i3; I" square; T; [ipiri3o; ;i;i;i; i3; I" square; T; [iririi3o; ;i;i;i; i3; I" square; T; [ihirii3o; ;i;i;i; i3; I" square; T; [irii3o; ;i;i;i; i3; I" square; T; [ipirii3o; ;i;i;i; i3; I" square; T; [iririi3o; ;i;i;i; i3; I" square; T; [ihirii3o; ;i;i;i; i3; I" square; T; [irii3o; ;i;i;i; i3; I" square; T; [ipirii3o; ;i;i;i; i3; I" square; T; [iri"ixi3o; ;i;i;i; i3; I" square; T; [ iri"ixii3o; ;i;i;i; i3; I" square; T; [iUifi3o; ;i;i;i; i3; I" square; T; [ipiUifi3o; ;i;i;i; i3; I" square; T; [iRiUifi3o; ;i;i;i; i3; I" square; T; [iLiUifi3o; ;i;i;i; i3; I" square; T; [iwifiii3o; ;i;i;i; i3; I" square; T; [ iwifiii"ixi3o; ;i;i;i; i3; I" square; T; [ iwifiii"ixii3o; ;i;i;i; i3; I" square; T; [iuixi3o; ;i;i;i; i3; I" square; T; [isixi3o; ;i;i;i; i3; I" square; T; [iixi3o; ;i;i;i; i3; I" square; T; [irixi3o; ;i;i;i; i3; I" square; T; [iui[i3o; ;i;i;i; i3; I" square; T; [isi[i3o; ;i;i;i; i3; I" square; T; [ii[i3o; ;i;i;i; i3; I" square; T; [iri[i3o; ;i;i;i; i3; I" square; T; [ipi[i3o; ;i;i;i; i3; I" square; T; [iRi[i3o; ;i;i;i; i3; I" square; T; [iui\i3o; ;i;i;i; i3; I" square; T; [isi\i3o; ;i;i;i; i3; I" square; T; [ii\i3o; ;i;i;i; i3; I" square; T; [iri\i3o; ;i;i;i; i3; I" square; T; [ipi\i3o; ;i;i;i; i3; I" square; T; [iRi\i3o; ;i;i;i; i3; I" square; T; [ipii3o; ;i;i;i; i3; I" square; T; [iRii3o; ;i;i;i; i3; I" square; T; [ ifi3iri3i3o; ;i;i;i; i3; I" square; T; [iGivi3o; ;i;i;i; i3; I" square; T; [ihihi3o; ;i;i;i; i3; I" square; T; [ihiii3o; ;i;i;i; i3; I" square; T; [ iHi"ipili3o; ;i;i;i; i3; I" square; T; [iHiti3i3o; ;i;i;i; i3; I" square; T; [iiiGi3o; ;i;i;i; i3; I" square; T; [iLi~i3o; ;i;i;i; i3; I" square; T; [imifi3o; ;i;i;i; i3; I" square; T; [iMiUi3o; ;i;i;i; i3; I" square; T; [inisi3o; ;i;i;i; i3; I" square; T; [iPiPi3o; ;i;i;i; i3; I" square; T; [iPiRi3o; ;i;i;i; i3; I" square; T; [ipiyi3o; ;i;i;i; i3; I" square; T; [iqiri3o; ;i;i;i; i3; I" square; T; [iqisi3o; ;i;i;i; i3; I" square; T; [iqitili3o; ;i;i;i; i3; I" square; T; [iqi}i3o; ;i;i;i; i3; I" square; T; [irigi3o; ;i;i;i; i3; I" square; T; [iriniqi3o; ;i;i;i; i3; I" square; T; [iritiqi3o; ;i;i;i; i3; I" square; T; [iUiMi3o; ;i;i;i; i3; I" square; T; [ iui3iri3i3o; ;i;i;i; i3; I" square; T; [iUiUiRi3o; ;i;i;i; i3; I" square; T; [iUiWi3o; ;i;i;i; i3; I" square; T; [ixiwi3o; ;i;i;i; i3; I" square; T; [iXi{i3o; ;i;i;i; i3; I" square; T; [i\igi3o; ;i;i;i; i3; I" square; T; [i[i"iri3o; ;i;i;i; i3; I" square; T; [iFi"iri3o; ;i;i;i; i3; I" compat; T; [i6iei3o; ;i;i;i; i3; I" compat; T; [i7iei3o; ;i;i;i; i3; I" compat; T; [i8iei3o; ;i;i;i; i3; I" compat; T; [i9iei3o; ;i;i;i; i3; I" compat; T; [i:iei3o; ;i;i;i; i3; I" compat; T; [i;iei3o; ;i;i;i; i3; I" compat; T; [iiei3o; ;i;i;i; i3; I" compat; T; [i6i5iei3o; ;i;i;i; i3; I" compat; T; [i6i6iei3o; ;i;i;i; i3; I" compat; T; [i6i7iei3o; ;i;i;i; i3; I" compat; T; [i6i8iei3o; ;i;i;i; i3; I" compat; T; [i6i9iei3o; ;i;i;i; i3; I" compat; T; [i6i:iei3o; ;i;i;i; i3; I" compat; T; [i6i;iei3o; ;i;i;i; i3; I" compat; T; [i6iiei3o; ;i;i;i; i3; I" compat; T; [i7i5iei3o; ;i;i;i; i3; I" compat; T; [i7i6iei3o; ;i;i;i; i3; I" compat; T; [i7i7iei3o; ;i;i;i; i3; I" compat; T; [i7i8iei3o; ;i;i;i; i3; I" compat; T; [i7i9iei3o; ;i;i;i; i3; I" compat; T; [i7i:iei3o; ;i;i;i; i3; I" compat; T; [i7i;iei3o; ;i;i;i; i3; I" compat; T; [i7iiei3o; ;i;i;i; i3; I" compat; T; [i8i5iei3o; ;i;i;i; i3; I" compat; T; [i8i6iei3o; ;i;i;i; i3; I" square; T; [ilifiqi4o; ;i;i;i; i4; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0i̟o; ;i;i;i; i̟; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0iào; ;i;i;i; ià; 0; 0iĠo; ;i;i;i; iĠ; 0; 0iŠo; ;i;i;i; iŠ; 0; 0iƠo; ;i;i;i; iƠ; 0; 0iǠo; ;i;i;i; iǠ; 0; 0iȠo; ;i;i;i; iȠ; 0; 0iɠo; ;i;i;i; iɠ; 0; 0iʠo; ;i;i;i; iʠ; 0; 0iˠo; ;i;i;i; iˠ; 0; 0i̠o; ;i;i;i; i̠; 0; 0i͠o; ;i;i;i; i͠; 0; 0iΠo; ;i;i;i; iΠ; 0; 0iϠo; ;i;i;i; iϠ; 0; 0iРo; ;i;i;i; iР; 0; 0iѠo; ;i;i;i; iѠ; 0; 0iҠo; ;i;i;i; iҠ; 0; 0iӠo; ;i;i;i; iӠ; 0; 0iԠo; ;i;i;i; iԠ; 0; 0iՠo; ;i;i;i; iՠ; 0; 0i֠o; ;i;i;i; i֠; 0; 0iנo; ;i;i;i; iנ; 0; 0iؠo; ;i;i;i; iؠ; 0; 0i٠o; ;i;i;i; i٠; 0; 0iڠo; ;i;i;i; iڠ; 0; 0i۠o; ;i;i;i; i۠; 0; 0iܠo; ;i;i;i; iܠ; 0; 0iݠo; ;i;i;i; iݠ; 0; 0iޠo; ;i;i;i; iޠ; 0; 0iߠo; ;i;i;i; iߠ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¡o; ;i;i;i; i¡; 0; 0iáo; ;i;i;i; iá; 0; 0iġo; ;i;i;i; iġ; 0; 0išo; ;i;i;i; iš; 0; 0iơo; ;i;i;i; iơ; 0; 0iǡo; ;i;i;i; iǡ; 0; 0iȡo; ;i;i;i; iȡ; 0; 0iɡo; ;i;i;i; iɡ; 0; 0iʡo; ;i;i;i; iʡ; 0; 0iˡo; ;i;i;i; iˡ; 0; 0i̡o; ;i;i;i; i̡; 0; 0i͡o; ;i;i;i; i͡; 0; 0iΡo; ;i;i;i; iΡ; 0; 0iϡo; ;i;i;i; iϡ; 0; 0iСo; ;i;i;i; iС; 0; 0iѡo; ;i;i;i; iѡ; 0; 0iҡo; ;i;i;i; iҡ; 0; 0iӡo; ;i;i;i; iӡ; 0; 0iԡo; ;i;i;i; iԡ; 0; 0iաo; ;i;i;i; iա; 0; 0i֡o; ;i;i;i; i֡; 0; 0iסo; ;i;i;i; iס; 0; 0iءo; ;i;i;i; iء; 0; 0i١o; ;i;i;i; i١; 0; 0iڡo; ;i;i;i; iڡ; 0; 0iۡo; ;i;i;i; iۡ; 0; 0iܡo; ;i;i;i; iܡ; 0; 0iݡo; ;i;i;i; iݡ; 0; 0iޡo; ;i;i;i; iޡ; 0; 0iߡo; ;i;i;i; iߡ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¢o; ;i;i;i; i¢; 0; 0iâo; ;i;i;i; iâ; 0; 0iĢo; ;i;i;i; iĢ; 0; 0iŢo; ;i;i;i; iŢ; 0; 0iƢo; ;i;i;i; iƢ; 0; 0iǢo; ;i;i;i; iǢ; 0; 0iȢo; ;i;i;i; iȢ; 0; 0iɢo; ;i;i;i; iɢ; 0; 0iʢo; ;i;i;i; iʢ; 0; 0iˢo; ;i;i;i; iˢ; 0; 0i̢o; ;i;i;i; i̢; 0; 0i͢o; ;i;i;i; i͢; 0; 0i΢o; ;i;i;i; i΢; 0; 0iϢo; ;i;i;i; iϢ; 0; 0iТo; ;i;i;i; iТ; 0; 0iѢo; ;i;i;i; iѢ; 0; 0iҢo; ;i;i;i; iҢ; 0; 0iӢo; ;i;i;i; iӢ; 0; 0iԢo; ;i;i;i; iԢ; 0; 0iբo; ;i;i;i; iբ; 0; 0i֢o; ;i;i;i; i֢; 0; 0iעo; ;i;i;i; iע; 0; 0iآo; ;i;i;i; iآ; 0; 0i٢o; ;i;i;i; i٢; 0; 0iڢo; ;i;i;i; iڢ; 0; 0iۢo; ;i;i;i; iۢ; 0; 0iܢo; ;i;i;i; iܢ; 0; 0iݢo; ;i;i;i; iݢ; 0; 0iޢo; ;i;i;i; iޢ; 0; 0iߢo; ;i;i;i; iߢ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i£o; ;i;i;i; i£; 0; 0ião; ;i;i;i; iã; 0; 0iģo; ;i;i;i; iģ; 0; 0iţo; ;i;i;i; iţ; 0; 0iƣo; ;i;i;i; iƣ; 0; 0iǣo; ;i;i;i; iǣ; 0; 0iȣo; ;i;i;i; iȣ; 0; 0iɣo; ;i;i;i; iɣ; 0; 0iʣo; ;i;i;i; iʣ; 0; 0iˣo; ;i;i;i; iˣ; 0; 0ịo; ;i;i;i; ị; 0; 0iͣo; ;i;i;i; iͣ; 0; 0iΣo; ;i;i;i; iΣ; 0; 0iϣo; ;i;i;i; iϣ; 0; 0iУo; ;i;i;i; iУ; 0; 0iѣo; ;i;i;i; iѣ; 0; 0iңo; ;i;i;i; iң; 0; 0iӣo; ;i;i;i; iӣ; 0; 0iԣo; ;i;i;i; iԣ; 0; 0iգo; ;i;i;i; iգ; 0; 0i֣o; ;i;i;i; i֣; 0; 0iףo; ;i;i;i; iף; 0; 0iأo; ;i;i;i; iأ; 0; 0i٣o; ;i;i;i; i٣; 0; 0iڣo; ;i;i;i; iڣ; 0; 0iۣo; ;i;i;i; iۣ; 0; 0iܣo; ;i;i;i; iܣ; 0; 0iݣo; ;i;i;i; iݣ; 0; 0iޣo; ;i;i;i; iޣ; 0; 0iߣo; ;i;i;i; iߣ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¤o; ;i;i;i; i¤; 0; 0iäo; ;i;i;i; iä; 0; 0iĤo; ;i;i;i; iĤ; 0; 0iŤo; ;i;i;i; iŤ; 0; 0iƤo; ;i;i;i; iƤ; 0; 0iФo; ;i;i;i; iФ; 0; 0iѤo; ;i;i;i; iѤ; 0; 0iҤo; ;i;i;i; iҤ; 0; 0iӤo; ;i;i;i; iӤ; 0; 0iԤo; ;i;i;i; iԤ; 0; 0iդo; ;i;i;i; iդ; 0; 0i֤o; ;i;i;i; i֤; 0; 0iפo; ;i;i;i; iפ; 0; 0iؤo; ;i;i;i; iؤ; 0; 0i٤o; ;i;i;i; i٤; 0; 0iڤo; ;i;i;i; iڤ; 0; 0iۤo; ;i;i;i; iۤ; 0; 0iܤo; ;i;i;i; iܤ; 0; 0iݤo; ;i;i;i; iݤ; 0; 0iޤo; ;i;i;i; iޤ; 0; 0iߤo; ;i;i;i; iߤ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¥o; ;i;i;i; i¥; 0; 0iåo; ;i;i;i; iå; 0; 0iĥo; ;i;i;i; iĥ; 0; 0iťo; ;i;i;i; iť; 0; 0iƥo; ;i;i;i; iƥ; 0; 0iǥo; ;i;i;i; iǥ; 0; 0iȥo; ;i;i;i; iȥ; 0; 0iɥo; ;i;i;i; iɥ; 0; 0iʥo; ;i;i;i; iʥ; 0; 0i˥o; ;i;i;i; i˥; 0; 0i̥o; ;i;i;i; i̥; 0; 0iͥo; ;i;i;i; iͥ; 0; 0iΥo; ;i;i;i; iΥ; 0; 0iϥo; ;i;i;i; iϥ; 0; 0iХo; ;i;i;i; iХ; 0; 0iѥo; ;i;i;i; iѥ; 0; 0iҥo; ;i;i;i; iҥ; 0; 0iӥo; ;i;i;i; iӥ; 0; 0iԥo; ;i;i;i; iԥ; 0; 0iեo; ;i;i;i; iե; 0; 0i֥o; ;i;i;i; i֥; 0; 0iץo; ;i;i;i; iץ; 0; 0iإo; ;i;i;i; iإ; 0; 0i٥o; ;i;i;i; i٥; 0; 0iڥo; ;i;i;i; iڥ; 0; 0iۥo; ;i;i;i; iۥ; 0; 0iܥo; ;i;i;i; iܥ; 0; 0iݥo; ;i;i;i; iݥ; 0; 0iޥo; ;i;i;i; iޥ; 0; 0iߥo; ;i;i;i; iߥ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i@o; ;i;i;iA; i@; 0; 0iAo; ;i;i@;i; iA; 0; 0iBo; ;i;i;iC; iB; 0; 0iCo; ;i;iB;i; iC; 0; 0iDo; ;i;i;iE; iD; 0; 0iEo; ;i;iD;i; iE; 0; 0iFo; ;i;i;iG; iF; 0; 0iGo; ;i;iF;i; iG; 0; 0iHo; ;i;i;iI; iH; 0; 0iIo; ;i;iH;i; iI; 0; 0iJo; ;i;i;iK; iJ; 0; 0iKo; ;i;iJ;i; iK; 0; 0iLo; ;i;i;iM; iL; 0; 0iMo; ;i;iL;i; iM; 0; 0iNo; ;i;i;iO; iN; 0; 0iOo; ;i;iN;i; iO; 0; 0iPo; ;i;i;iQ; iP; 0; 0iQo; ;i;iP;i; iQ; 0; 0iRo; ;i;i;iS; iR; 0; 0iSo; ;i;iR;i; iS; 0; 0iTo; ;i;i;iU; iT; 0; 0iUo; ;i;iT;i; iU; 0; 0iVo; ;i;i;iW; iV; 0; 0iWo; ;i;iV;i; iW; 0; 0iXo; ;i;i;iY; iX; 0; 0iYo; ;i;iX;i; iY; 0; 0iZo; ;i;i;i[; iZ; 0; 0i[o; ;i;iZ;i; i[; 0; 0i\o; ;i;i;i]; i\; 0; 0i]o; ;i;i\;i; i]; 0; 0i^o; ;i;i;i_; i^; 0; 0i_o; ;i;i^;i; i_; 0; 0i`o; ;i;i;ia; i`; 0; 0iao; ;i;i`;i; ia; 0; 0ibo; ;i;i;ic; ib; 0; 0ico; ;i;ib;i; ic; 0; 0ido; ;i;i;ie; id; 0; 0ieo; ;i;id;i; ie; 0; 0ifo; ;i;i;ig; if; 0; 0igo; ;i;if;i; ig; 0; 0iho; ;i;i;ii; ih; 0; 0iio; ;i;ih;i; ii; 0; 0ijo; ;i;i;ik; ij; 0; 0iko; ;i;ij;i; ik; 0; 0ilo; ;i;i;im; il; 0; 0imo; ;i;il;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [iJio; ;i;i;i; i; I" super; T; [iLio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¦o; ;i;i;i; i¦; 0; 0iæo; ;i;i;i; iæ; 0; 0iĦo; ;i;i;i; iĦ; 0; 0iŦo; ;i;i;i; iŦ; 0; 0iƦo; ;i;i;i; iƦ; 0; 0iǦo; ;i;i;i; iǦ; 0; 0iȦo; ;i;i;i; iȦ; 0; 0iɦo; ;i;i;i; iɦ; 0; 0iʦo; ;i;i;i; iʦ; 0; 0i˦o; ;i;i;i; i˦; 0; 0i̦o; ;i;i;i; i̦; 0; 0iͦo; ;i;i;i; iͦ; 0; 0iΦo; ;i;i;i; iΦ; 0; 0iϦo; ;i;i;i; iϦ; 0; 0iЦo; ;i;i;i; iЦ; 0; 0iѦo; ;i;i;i; iѦ; 0; 0iҦo; ;i;i;i; iҦ; 0; 0iӦo; ;i;i;i; iӦ; 0; 0iԦo; ;i;i;i; iԦ; 0; 0iզo; ;i;i;i; iզ; 0; 0i֦o; ;i;i;i; i֦; 0; 0iצo; ;i;i;i; iצ; 0; 0iئo; ;i;i;i; iئ; 0; 0i٦o; ;i;i;i; i٦; 0; 0iڦo; ;i;i;i; iڦ; 0; 0iۦo; ;i;i;i; iۦ; 0; 0iܦo; ;i;i;i; iܦ; 0; 0iݦo; ;i;i;i; iݦ; 0; 0iަo; ;i;i;i; iަ; 0; 0iߦo; ;i;i;i; iߦ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i#; i"; 0; 0i#o; ;i;i";i; i#; 0; 0i$o; ;i;i;i%; i$; 0; 0i%o; ;i;i$;i; i%; 0; 0i&o; ;i;i;i'; i&; 0; 0i'o; ;i;i&;i; i'; 0; 0i(o; ;i;i;i); i(; 0; 0i)o; ;i;i(;i; i); 0; 0i*o; ;i;i;i+; i*; 0; 0i+o; ;i;i*;i; i+; 0; 0i,o; ;i;i;i-; i,; 0; 0i-o; ;i;i,;i; i-; 0; 0i.o; ;i;i;i/; i.; 0; 0i/o; ;i;i.;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i3; i2; 0; 0i3o; ;i;i2;i; i3; 0; 0i4o; ;i;i;i5; i4; 0; 0i5o; ;i;i4;i; i5; 0; 0i6o; ;i;i;i7; i6; 0; 0i7o; ;i;i6;i; i7; 0; 0i8o; ;i;i;i9; i8; 0; 0i9o; ;i;i8;i; i9; 0; 0i:o; ;i;i;i;; i:; 0; 0i;o; ;i;i:;i; i;; 0; 0io; ;i;i;i?; i>; 0; 0i?o; ;i;i>;i; i?; 0; 0i@o; ;i;i;iA; i@; 0; 0iAo; ;i;i@;i; iA; 0; 0iBo; ;i;i;iC; iB; 0; 0iCo; ;i;iB;i; iC; 0; 0iDo; ;i;i;iE; iD; 0; 0iEo; ;i;iD;i; iE; 0; 0iFo; ;i;i;iG; iF; 0; 0iGo; ;i;iF;i; iG; 0; 0iHo; ;i;i;iI; iH; 0; 0iIo; ;i;iH;i; iI; 0; 0iJo; ;i;i;iK; iJ; 0; 0iKo; ;i;iJ;i; iK; 0; 0iLo; ;i;i;iM; iL; 0; 0iMo; ;i;iL;i; iM; 0; 0iNo; ;i;i;iO; iN; 0; 0iOo; ;i;iN;i; iO; 0; 0iPo; ;i;i;iQ; iP; 0; 0iQo; ;i;iP;i; iQ; 0; 0iRo; ;i;i;iS; iR; 0; 0iSo; ;i;iR;i; iS; 0; 0iTo; ;i;i;iU; iT; 0; 0iUo; ;i;iT;i; iU; 0; 0iVo; ;i;i;iW; iV; 0; 0iWo; ;i;iV;i; iW; 0; 0iXo; ;i;i;iY; iX; 0; 0iYo; ;i;iX;i; iY; 0; 0iZo; ;i;i;i[; iZ; 0; 0i[o; ;i;iZ;i; i[; 0; 0i\o; ;i;i;i]; i\; 0; 0i]o; ;i;i\;i; i]; 0; 0i^o; ;i;i;i_; i^; 0; 0i_o; ;i;i^;i; i_; 0; 0i`o; ;i;i;ia; i`; 0; 0iao; ;i;i`;i; ia; 0; 0ibo; ;i;i;ic; ib; 0; 0ico; ;i;ib;i; ic; 0; 0ido; ;i;i;ie; id; 0; 0ieo; ;i;id;i; ie; 0; 0ifo; ;i;i;ig; if; 0; 0igo; ;i;if;i; ig; 0; 0iho; ;i;i;ii; ih; 0; 0iio; ;i;ih;i; ii; 0; 0ijo; ;i;i;ik; ij; 0; 0iko; ;i;ij;i; ik; 0; 0ilo; ;i;i;im; il; 0; 0imo; ;i;il;i; im; 0; 0ino; ;i;i;io; in; 0; 0ioo; ;i;in;i; io; 0; 0ipo; ;i;i;i; ip; I" super; T; [ioiqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;iz; iy; 0; 0izo; ;i;iy;i; iz; 0; 0i{o; ;i;i;i|; i{; 0; 0i|o; ;i;i{;i; i|; 0; 0i}o; ;i;i;iy; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i~;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;ie; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;if; i; 0; 0io; ;i;i;i\; i; 0; 0io; ;i;i;ia; i; 0; 0io; ;i;i;il; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" super; T; [i&io; ;i;i;i; i; I" super; T; [iSio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i¨o; ;i;i;i; i¨; 0; 0ièo; ;i;i;i; iè; 0; 0iĨo; ;i;i;i; iĨ; 0; 0iΨo; ;i;i;i; iΨ; 0; 0iϨo; ;i;i;i; iϨ; 0; 0iШo; ;i;i;i; iШ; 0; 0iѨo; ;i;i;i; iѨ; 0; 0iҨo; ;i;i;i; iҨ; 0; 0iӨo; ;i;i;i; iӨ; 0; 0iԨo; ;i;i;i; iԨ; 0; 0iըo; ;i;i;i; iը; 0; 0i֨o; ;i;i;i; i֨; 0; 0iרo; ;i;i;i; iר; 0; 0iبo; ;i;i;i; iب; 0; 0i٨o; ;i;i;i; i٨; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i©o; ;i;i;i; i©; 0; 0iéo; ;i;i;i; ié; 0; 0iĩo; ;i;i;i; iĩ; 0; 0iũo; ;i;i;i; iũ; 0; 0iƩo; ;i;i;i; iƩ; 0; 0iǩo; ;i;i;i; iǩ; 0; 0iȩo; ;i;i;i; iȩ; 0; 0iɩo; ;i;i;i; iɩ; 0; 0iʩo; ;i;i;i; iʩ; 0; 0i˩o; ;i;i;i; i˩; 0; 0i̩o; ;i;i;i; i̩; 0; 0iͩo; ;i;i;i; iͩ; 0; 0iϩo; ;i;i;i; iϩ; 0; 0iЩo; ;i;i;i; iЩ; 0; 0iѩo; ;i;i;i; iѩ; 0; 0iҩo; ;i;i;i; iҩ; 0; 0iөo; ;i;i;i; iө; 0; 0iԩo; ;i;i;i; iԩ; 0; 0iթo; ;i;i;i; iթ; 0; 0i֩o; ;i;i;i; i֩; 0; 0iשo; ;i;i;i; iש; 0; 0iةo; ;i;i;i; iة; 0; 0i٩o; ;i;i;i; i٩; 0; 0iީo; ;i;i;i; iީ; 0; 0iߩo; ;i;i;i; iߩ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0iªo; ;i;i;i; iª; 0; 0i۪o; ;i;i;i; i۪; 0; 0iܪo; ;i;i;i; iܪ; 0; 0iݪo; ;i;i;i; iݪ; 0; 0iުo; ;i;i;i; iު; 0; 0iߪo; ;i;i;i; iߪ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; I" super; T; [i'i]o; ;i;i;i; i]; I" super; T; [i7i^o; ;i;i;i; i^; I" super; T; [iki_o; ;i;i;i; i_; I" super; T; [iRido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i«o; ;i;i;i; i«; 0; 0iëo; ;i;i;i; ië; 0; 0iīo; ;i;i;i; iī; 0; 0iūo; ;i;i;i; iū; 0; 0iƫo; ;i;i;i; iƫ; 0; 0iǫo; ;i;i;i; iǫ; 0; 0iȫo; ;i;i;i; iȫ; 0; 0iɫo; ;i;i;i; iɫ; 0; 0iʫo; ;i;i;i; iʫ; 0; 0i˫o; ;i;i;i; i˫; 0; 0i̫o; ;i;i;i; i̫; 0; 0iͫo; ;i;i;i; iͫ; 0; 0iΫo; ;i;i;i; iΫ; 0; 0iϫo; ;i;i;i; iϫ; 0; 0iЫo; ;i;i;i; iЫ; 0; 0iѫo; ;i;i;i; iѫ; 0; 0iҫo; ;i;i;i; iҫ; 0; 0iӫo; ;i;i;i; iӫ; 0; 0iԫo; ;i;i;i; iԫ; 0; 0iիo; ;i;i;i; iի; 0; 0i֫o; ;i;i;i; i֫; 0; 0i׫o; ;i;i;i; i׫; 0; 0iثo; ;i;i;i; iث; 0; 0i٫o; ;i;i;i; i٫; 0; 0iګo; ;i;i;i; iګ; 0; 0i۫o; ;i;i;i; i۫; 0; 0iܫo; ;i;i;i; iܫ; 0; 0iݫo; ;i;i;i; iݫ; 0; 0iޫo; ;i;i;i; iޫ; 0; 0i߫o; ;i;i;i; i߫; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iHio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [iʎio; ;i;i;i; i; 0; [iȌio; ;i;i;i; i; 0; [inio; ;i;i;i; i; 0; [i2Nio; ;i;i;i; i; 0; [iSio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ii o; ;i;i;i; i ; 0; [iQYi o; ;i;i;i; i ; 0; [iёi o; ;i;i;i; i ; 0; [iUi o; ;i;i;i; i ; 0; [iHYi o; ;i;i;i; i ; 0; [iaio; ;i;i;i; i; 0; [iivio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i?io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [isio; ;i;i;i; i; 0; [i=io; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iNio; ;i;i;i; i; 0; [iuSio; ;i;i;i; i; 0; [ikio; ;i;i;i; i; 0; [irio; ;i;i;i; i; 0; [i-i o; ;i;i;i; i ; 0; [ii!o; ;i;i;i; i!; 0; [iP]i"o; ;i;i;i; i"; 0; [ioi#o; ;i;i;i; i#; 0; [iͅi$o; ;i;i;i; i$; 0; [idi%o; ;i;i;i; i%; 0; [ibi&o; ;i;i;i; i&; 0; [i؁i'o; ;i;i;i; i'; 0; [ii(o; ;i;i;i; i(; 0; [i^i)o; ;i;i;i; i); 0; [igi*o; ;i;i;i; i*; 0; [ijmi+o; ;i;i;i; i+; 0; [iri,o; ;i;i;i; i,; 0; [iΐi-o; ;i;i;i; i-; 0; [iOi.o; ;i;i;i; i.; 0; [iQi/o; ;i;i;i; i/; 0; [iRi0o; ;i;i;i; i0; 0; [idi1o; ;i;i;i; i1; 0; [iji2o; ;i;i;i; i2; 0; [iri3o; ;i;i;i; i3; 0; [ivi4o; ;i;i;i; i4; 0; [ii5o; ;i;i;i; i5; 0; [ii6o; ;i;i;i; i6; 0; [i\i7o; ;i;i;i; i7; 0; [ii8o; ;i;i;i; i8; 0; [i2i9o; ;i;i;i; i9; 0; [ioi:o; ;i;i;i; i:; 0; [ii;o; ;i;i;i; i;; 0; [ixio; ;i;i;i; i>; 0; [iɃi?o; ;i;i;i; i?; 0; [ii@o; ;i;i;i; i@; 0; [iiAo; ;i;i;i; iA; 0; [i֊iBo; ;i;i;i; iB; 0; [iXiCo; ;i;i;i; iC; 0; [i_iDo; ;i;i;i; iD; 0; [i`|iEo; ;i;i;i; iE; 0; [i~iFo; ;i;i;i; iF; 0; [ibriGo; ;i;i;i; iG; 0; [ixiHo; ;i;i;i; iH; 0; [iŒiIo; ;i;i;i; iI; 0; [iiJo; ;i;i;i; iJ; 0; [iXiKo; ;i;i;i; iK; 0; [ib\iLo; ;i;i;i; iL; 0; [ijiMo; ;i;i;i; iM; 0; [imiNo; ;i;i;i; iN; 0; [ioiOo; ;i;i;i; iO; 0; [i/}iPo; ;i;i;i; iP; 0; [i7~iQo; ;i;i;i; iQ; 0; [iKiRo; ;i;i;i; iR; 0; [iRiSo; ;i;i;i; iS; 0; [iiTo; ;i;i;i; iT; 0; [iQiUo; ;i;i;i; iU; 0; [iQiVo; ;i;i;i; iV; 0; [iziWo; ;i;i;i; iW; 0; [i}iXo; ;i;i;i; iX; 0; [iiYo; ;i;i;i; iY; 0; [iuiZo; ;i;i;i; iZ; 0; [ii[o; ;i;i;i; i[; 0; [ibi\o; ;i;i;i; i\; 0; [iji]o; ;i;i;i; i]; 0; [ii^o; ;i;i;i; i^; 0; [i9Ni_o; ;i;i;i; i_; 0; [i[i`o; ;i;i;i; i`; 0; [i`iao; ;i;i;i; ia; 0; [isibo; ;i;i;i; ib; 0; [ipuico; ;i;i;i; ic; 0; [iSido; ;i;i;i; id; 0; [ixieo; ;i;i;i; ie; 0; [iOifo; ;i;i;i; if; 0; [i_igo; ;i;i;i; ig; 0; [i Niho; ;i;i;i; ih; 0; [iliio; ;i;i;i; ii; 0; [ixeijo; ;i;i;i; ij; 0; [i"}iko; ;i;i;i; ik; 0; [iSilo; ;i;i;i; il; 0; [i^Ximo; ;i;i;i; im; 0; [iwino; ;i;i;i; in; 0; [iIioo; ;i;i;i; io; 0; [iipo; ;i;i;i; ip; 0; [ikiqo; ;i;i;i; iq; 0; [iiro; ;i;i;i; ir; 0; [iliso; ;i;i;i; is; 0; [ibito; ;i;i;i; it; 0; [iiuo; ;i;i;i; iu; 0; [icivo; ;i;i;i; iv; 0; [ieuiwo; ;i;i;i; iw; 0; [iNixo; ;i;i;i; ix; 0; [iiQiyo; ;i;i;i; iy; 0; [iQizo; ;i;i;i; iz; 0; [ihi{o; ;i;i;i; i{; 0; [i|i|o; ;i;i;i; i|; 0; [ioi}o; ;i;i;i; i}; 0; [iҊi~o; ;i;i;i; i~; 0; [iϑio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [iBTio; ;i;i;i; i; 0; [isYio; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [ieio; ;i;i;i; i; 0; [ioio; ;i;i;i; i; 0; [i*yio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iΞio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [iwkio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [it^io; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [idio; ;i;i;i; i; 0; [i#oio; ;i;i;i; i; 0; [iIqio; ;i;i;i; i; 0; [itio; ;i;i;i; i; 0; [iyio; ;i;i;i; i; 0; [i}io; ;i;i;i; i; 0; [ioio; ;i;i;i; i; 0; [i&io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i#io; ;i;i;i; i; 0; [iJio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [iTio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [iˆio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i{cio; ;i;i;i; i; 0; [ikio; ;i;i;i; i; 0; [i>|io; ;i;i;i; i; 0; [iusio; ;i;i;i; i; 0; [iNio; ;i;i;i; i; 0; [iVio; ;i;i;i; i; 0; [i[io; ;i;i;i; i; 0; [i]io; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [isio; ;i;i;i; i; 0; [iitio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iFio; ;i;i;i; i; 0; [i4io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iHio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iOio; ;i;i;i; i; 0; [iyio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [iNio; ;i;i;i; i; 0; [iPio; ;i;i;i; i; 0; [i[io; ;i;i;i; i; 0; [i?\io; ;i;i;i; i; 0; [ieio; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [iqio; ;i;i;i; i; 0; [iBvio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i|io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [i.io; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [i{gio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [iAmio; ;i;i;i; i; 0; [inio; ;i;i;i; i; 0; [i tio; ;i;i;i; i; 0; [iYuio; ;i;i;i; i; 0; [ikxio; ;i;i;i; i; 0; [i}io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [imQio; ;i;i;i; i; 0; [i.bio; ;i;i;i; i; 0; [ixio; ;i;i;i; i; 0; [i+Pio; ;i;i;i; i; 0; [i]io; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [i*io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [iDaio; ;i;i;i; i; 0; [ihio; ;i;i;i; i; 0; [isio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i)Rio; ;i;i;i; i; 0; [iTio; ;i;i;i; i; 0; [ie\io; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [iNgio; ;i;i;i; i; 0; [ihio; ;i;i;i; i; 0; [ilio; ;i;i;i; i; 0; [itio; ;i;i;i; i; 0; [iuio; ;i;i;i; i; 0; [iyio; ;i;i;i; i; 0; [iψio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ȋio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i?Sio; ;i;i;i; i; 0; [inio; ;i;i;i; i; 0; [iTio; ;i;i;i; i; 0; [iqio; ;i;i;i; i; 0; [itio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iWio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [izio; ;i;i;i; i; 0; [i {io; ;i;i;i; i; 0; [i|io; ;i;i;i; i; 0; [irio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [iXio; ;i;i;i; i; 0; [iNio; ;i;i;i; i; 0; [i6io; ;i;i;i; i; 0; [i:Rio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [i|io; ;i;i;i; i; 0; [i[io; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [iLi o; ;i;i;i; i ; 0; [iMi o; ;i;i;i; i ; 0; [ii o; ;i;i;i; i ; 0; [i^i o; ;i;i;i; i ; 0; [i@Qi o; ;i;i;i; i ; 0; [iUio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iZXio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [itfio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [i*sio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [io; ;i;i;i; i>; 0; [ihai?o; ;i;i;i; i?; 0; [iai@o; ;i;i;i; i@; 0; [iaiAo; ;i;i;i; iA; 0; [iOeiBo; ;i;i;i; iB; 0; [ieiCo; ;i;i;i; iC; 0; [ifiDo; ;i;i;i; iD; 0; [ihiEo; ;i;i;i; iE; 0; [iwmiFo; ;i;i;i; iF; 0; [iniGo; ;i;i;i; iG; 0; [i"oiHo; ;i;i;i; iH; 0; [inqiIo; ;i;i;i; iI; 0; [i+riJo; ;i;i;i; iJ; 0; [i"tiKo; ;i;i;i; iK; 0; [ixiLo; ;i;i;i; iL; 0; [i>yiMo; ;i;i;i; iM; 0; [iIyiNo; ;i;i;i; iN; 0; [iHyiOo; ;i;i;i; iO; 0; [iPyiPo; ;i;i;i; iP; 0; [iVyiQo; ;i;i;i; iQ; 0; [i]yiRo; ;i;i;i; iR; 0; [iyiSo; ;i;i;i; iS; 0; [iyiTo; ;i;i;i; iT; 0; [i@ziUo; ;i;i;i; iU; 0; [iziVo; ;i;i;i; iV; 0; [i{iWo; ;i;i;i; iW; 0; [i}iXo; ;i;i;i; iX; 0; [i ~iYo; ;i;i;i; iY; 0; [iA~iZo; ;i;i;i; iZ; 0; [iri[o; ;i;i;i; i[; 0; [ii\o; ;i;i;i; i\; 0; [ii]o; ;i;i;i; i]; 0; [iyi^o; ;i;i;i; i^; 0; [iyi_o; ;i;i;i; i_; 0; [iWi`o; ;i;i;i; i`; 0; [iiao; ;i;i;i; ia; 0; [iibo; ;i;i;i; ib; 0; [iico; ;i;i;i; ic; 0; [i9ido; ;i;i;i; id; 0; [iӌieo; ;i;i;i; ie; 0; [iifo; ;i;i;i; if; 0; [iigo; ;i;i;i; ig; 0; [i8iho; ;i;i;i; ih; 0; [iiio; ;i;i;i; ii; 0; [iijo; ;i;i;i; ij; 0; [i;iko; ;i;i;i; ik; 0; [iu`ilo; ;i;i;i; il; 0; [iBimo; ;i;i;i; im; 0; [iipo; ;i;i;i; ip; 0; [i&Niqo; ;i;i;i; iq; 0; [iQiro; ;i;i;i; ir; 0; [ihQiso; ;i;i;i; is; 0; [iOito; ;i;i;i; it; 0; [iEQiuo; ;i;i;i; iu; 0; [iQivo; ;i;i;i; iv; 0; [iRiwo; ;i;i;i; iw; 0; [iRixo; ;i;i;i; ix; 0; [iUiyo; ;i;i;i; iy; 0; [iUUizo; ;i;i;i; iz; 0; [iUi{o; ;i;i;i; i{; 0; [iUi|o; ;i;i;i; i|; 0; [iZXi}o; ;i;i;i; i}; 0; [iXi~o; ;i;i;i; i~; 0; [iDYio; ;i;i;i; i; 0; [iTYio; ;i;i;i; i; 0; [ibZio; ;i;i;i; i; 0; [i([io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [ii_io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [iNaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [i`aio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [i4bio; ;i;i;i; i; 0; [icio; ;i;i;i; i; 0; [idio; ;i;i;i; i; 0; [iRdio; ;i;i;i; i; 0; [iVeio; ;i;i;i; i; 0; [itfio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [iVgio; ;i;i;i; i; 0; [iykio; ;i;i;i; i; 0; [ikio; ;i;i;i; i; 0; [iAmio; ;i;i;i; i; 0; [inio; ;i;i;i; i; 0; [inio; ;i;i;i; i; 0; [i"oio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [inqio; ;i;i;i; i; 0; [iwio; ;i;i;i; i; 0; [i5rio; ;i;i;i; i; 0; [irio; ;i;i;i; i; 0; [i*sio; ;i;i;i; i; 0; [iqtio; ;i;i;i; i; 0; [iuio; ;i;i;i; i; 0; [i;uio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [iJwio; ;i;i;i; i; 0; [i@wio; ;i;i;i; i; 0; [ixio; ;i;i;i; i; 0; [izio; ;i;i;i; i; 0; [i{io; ;i;i;i; i; 0; [i{|io; ;i;i;i; i; 0; [i[}io; ;i;i;i; i; 0; [i}io; ;i;i;i; i; 0; [i>io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iyio; ;i;i;i; i; 0; [iAio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iˊio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i9io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i8io; ;i;i;i; i; 0; [irio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ivio; ;i;i;i; i; 0; [i|io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iVio; ;i;i;i; i; 0; [iۗio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i io; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iJ(io; ;i;i;i; i; 0; [iD(io; ;i;i;i; i; 0; [i3io; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [i@io; ;i;i;i; i; 0; [i9@io; ;i;i;i; i; 0; [iIRio; ;i;i;i; i; 0; [i\io; ;i;i;i; i; 0; [i~io; ;i;i;i; i; 0; [iCio; ;i;i;i; i; 0; [iio; ;i;i;i; i; I" compat; T; [ikikio; ;i;i;i; i; I" compat; T; [ikinio; ;i;i;i; i; I" compat; T; [ikiqio; ;i;i;i; i; I" compat; T; [ikikinio; ;i;i;i; i; I" compat; T; [ikikiqio; ;i;i;i; i; I" compat; T; [iiyio; ;i;i;i; i; I" compat; T; [ixiyio; ;i;i;i; i; I" compat; T; [itivio; ;i;i;i; i; I" compat; T; [itieio; ;i;i;i; i; I" compat; T; [itikio; ;i;i;i; i; I" compat; T; [i~ivio; ;i;i;i; i; I" compat; T; [itimio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iii o; ;i;i;i; i ; I" font; T; [ii!o; ;i;i;i; i!; I" font; T; [ii"o; ;i;i;i; i"; I" font; T; [ii#o; ;i;i;i; i#; I" font; T; [ii$o; ;i;i;i; i$; I" font; T; [ii%o; ;i;i;i; i%; I" font; T; [ii&o; ;i;i;i; i&; I" font; T; [ii'o; ;i;i;i; i'; I" font; T; [ii(o; ;i;i;i; i(; I" font; T; [ii)o; ;i;i;i; i); I" font; T; [i0i*o; ;i;i;i; i*; 0; [iii+o; ;i;i;i; i+; 0; [iii,o; ;i;i;i; i,; 0; [iIii-o; ;i;i;i; i-; 0; [iIii.o; ;i;i;i; i.; 0; [iii/o; ;i;i;i; i/; 0; [iii0o; ;i;i;i; i0; 0; [iii1o; ;i;i;i; i1; 0; [iii2o; ;i;i;i; i2; 0; [iii3o; ;i;i;i; i3; 0; [iii4o; ;i;i;i; i4; 0; [iii5o; ;i;i;i; i5; 0; [iii6o; ;i;i;i; i6; 0; [iii8o; ;i;i;i; i8; 0; [iii9o; ;i;i;i; i9; 0; [iii:o; ;i;i;i; i:; 0; [iii;o; ;i;i;i; i;; 0; [iiio; ;i;i;i; i>; 0; [iii@o; ;i;i;i; i@; 0; [iiiAo; ;i;i;i; iA; 0; [iiiCo; ;i;i;i; iC; 0; [iiiDo; ;i;i;i; iD; 0; [iiiFo; ;i;i;i; iF; 0; [iiiGo; ;i;i;i; iG; 0; [iiiHo; ;i;i;i; iH; 0; [iiiIo; ;i;i;i; iI; 0; [iiiJo; ;i;i;i; iJ; 0; [iiiKo; ;i;i;i; iK; 0; [iiiLo; ;i;i;i; iL; 0; [iiiMo; ;i;i;i; iM; 0; [iiiNo; ;i;i;i; iN; 0; [iiiOo; ;i;i;i; iO; I" compat; T; [iiiPo; ;i;i;i; iP; I" isolated; T; [iqiQo; ;i;i;i; iQ; I" final; T; [iqiRo; ;i;i;i; iR; I" isolated; T; [i{iSo; ;i;i;i; iS; I" final; T; [i{iTo; ;i;i;i; iT; I" initial; T; [i{iUo; ;i;i;i; iU; I" medial; T; [i{iVo; ;i;i;i; iV; I" isolated; T; [i~iWo; ;i;i;i; iW; I" final; T; [i~iXo; ;i;i;i; iX; I" initial; T; [i~iYo; ;i;i;i; iY; I" medial; T; [i~iZo; ;i;i;i; iZ; I" isolated; T; [ii[o; ;i;i;i; i[; I" final; T; [ii\o; ;i;i;i; i\; I" initial; T; [ii]o; ;i;i;i; i]; I" medial; T; [ii^o; ;i;i;i; i^; I" isolated; T; [izi_o; ;i;i;i; i_; I" final; T; [izi`o; ;i;i;i; i`; I" initial; T; [iziao; ;i;i;i; ia; I" medial; T; [izibo; ;i;i;i; ib; I" isolated; T; [iico; ;i;i;i; ic; I" final; T; [iido; ;i;i;i; id; I" initial; T; [iieo; ;i;i;i; ie; I" medial; T; [iifo; ;i;i;i; if; I" isolated; T; [iyigo; ;i;i;i; ig; I" final; T; [iyiho; ;i;i;i; ih; I" initial; T; [iyiio; ;i;i;i; ii; I" medial; T; [iyijo; ;i;i;i; ij; I" isolated; T; [iiko; ;i;i;i; ik; I" final; T; [iilo; ;i;i;i; il; I" initial; T; [iimo; ;i;i;i; im; I" medial; T; [iino; ;i;i;i; in; I" isolated; T; [iioo; ;i;i;i; io; I" final; T; [iipo; ;i;i;i; ip; I" initial; T; [iiqo; ;i;i;i; iq; I" medial; T; [iiro; ;i;i;i; ir; I" isolated; T; [iiso; ;i;i;i; is; I" final; T; [iito; ;i;i;i; it; I" initial; T; [iiuo; ;i;i;i; iu; I" medial; T; [iivo; ;i;i;i; iv; I" isolated; T; [iiwo; ;i;i;i; iw; I" final; T; [iixo; ;i;i;i; ix; I" initial; T; [iiyo; ;i;i;i; iy; I" medial; T; [iizo; ;i;i;i; iz; I" isolated; T; [ii{o; ;i;i;i; i{; I" final; T; [ii|o; ;i;i;i; i|; I" initial; T; [ii}o; ;i;i;i; i}; I" medial; T; [ii~o; ;i;i;i; i~; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iwio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" initial; T; [iIio; ;i;i;i; i; I" medial; T; [iIio; ;i;i;i; i; I" isolated; T; [i&i'io; ;i;i;i; i; I" final; T; [i&i'io; ;i;i;i; i; I" isolated; T; [i&iio; ;i;i;i; i; I" final; T; [i&iio; ;i;i;i; i; I" isolated; T; [i&iHio; ;i;i;i; i; I" final; T; [i&iHio; ;i;i;i; i; I" isolated; T; [i&iio; ;i;i;i; i; I" final; T; [i&iio; ;i;i;i; i; I" isolated; T; [i&iio; ;i;i;i; i; I" final; T; [i&iio; ;i;i;i; i; I" isolated; T; [i&iio; ;i;i;i; i; I" final; T; [i&iio; ;i;i;i; i; I" isolated; T; [i&iio; ;i;i;i; i; I" final; T; [i&iio; ;i;i;i; i; I" initial; T; [i&iio; ;i;i;i; i; I" isolated; T; [i&iIio; ;i;i;i; i; I" final; T; [i&iIio; ;i;i;i; i; I" initial; T; [i&iIio; ;i;i;i; i; I" isolated; T; [iio; ;i;i;i; i; I" final; T; [iio; ;i;i;i; i; I" initial; T; [iio; ;i;i;i; i; I" medial; T; [iio; ;i;i;i; i; I" isolated; T; [i&i,io; ;i;i;i; i; I" isolated; T; [i&i-io; ;i;i;i; i; I" isolated; T; [i&iEio; ;i;i;i; i; I" isolated; T; [i&iIio; ;i;i;i; i; I" isolated; T; [i&iJio; ;i;i;i; i; I" isolated; T; [i(i,io; ;i;i;i; i; I" isolated; T; [i(i-io; ;i;i;i; i; I" isolated; T; [i(i.io; ;i;i;i; i; I" isolated; T; [i(iEi o; ;i;i;i; i ; I" isolated; T; [i(iIi o; ;i;i;i; i ; I" isolated; T; [i(iJi o; ;i;i;i; i ; I" isolated; T; [i*i,i o; ;i;i;i; i ; I" isolated; T; [i*i-i o; ;i;i;i; i ; I" isolated; T; [i*i.io; ;i;i;i; i; I" isolated; T; [i*iEio; ;i;i;i; i; I" isolated; T; [i*iIio; ;i;i;i; i; I" isolated; T; [i*iJio; ;i;i;i; i; I" isolated; T; [i+i,io; ;i;i;i; i; I" isolated; T; [i+iEio; ;i;i;i; i; I" isolated; T; [i+iIio; ;i;i;i; i; I" isolated; T; [i+iJio; ;i;i;i; i; I" isolated; T; [i,i-io; ;i;i;i; i; I" isolated; T; [i,iEio; ;i;i;i; i; I" isolated; T; [i-i,io; ;i;i;i; i; I" isolated; T; [i-iEio; ;i;i;i; i; I" isolated; T; [i.i,io; ;i;i;i; i; I" isolated; T; [i.i-io; ;i;i;i; i; I" isolated; T; [i.iEio; ;i;i;i; i; I" isolated; T; [i3i,io; ;i;i;i; i; I" isolated; T; [i3i-io; ;i;i;i; i; I" isolated; T; [i3i.io; ;i;i;i; i; I" isolated; T; [i3iEi o; ;i;i;i; i ; I" isolated; T; [i5i-i!o; ;i;i;i; i!; I" isolated; T; [i5iEi"o; ;i;i;i; i"; I" isolated; T; [i6i,i#o; ;i;i;i; i#; I" isolated; T; [i6i-i$o; ;i;i;i; i$; I" isolated; T; [i6i.i%o; ;i;i;i; i%; I" isolated; T; [i6iEi&o; ;i;i;i; i&; I" isolated; T; [i7i-i'o; ;i;i;i; i'; I" isolated; T; [i7iEi(o; ;i;i;i; i(; I" isolated; T; [i8iEi)o; ;i;i;i; i); I" isolated; T; [i9i,i*o; ;i;i;i; i*; I" isolated; T; [i9iEi+o; ;i;i;i; i+; I" isolated; T; [i:i,i,o; ;i;i;i; i,; I" isolated; T; [i:iEi-o; ;i;i;i; i-; I" isolated; T; [iAi,i.o; ;i;i;i; i.; I" isolated; T; [iAi-i/o; ;i;i;i; i/; I" isolated; T; [iAi.i0o; ;i;i;i; i0; I" isolated; T; [iAiEi1o; ;i;i;i; i1; I" isolated; T; [iAiIi2o; ;i;i;i; i2; I" isolated; T; [iAiJi3o; ;i;i;i; i3; I" isolated; T; [iBi-i4o; ;i;i;i; i4; I" isolated; T; [iBiEi5o; ;i;i;i; i5; I" isolated; T; [iBiIi6o; ;i;i;i; i6; I" isolated; T; [iBiJi7o; ;i;i;i; i7; I" isolated; T; [iCi'i8o; ;i;i;i; i8; I" isolated; T; [iCi,i9o; ;i;i;i; i9; I" isolated; T; [iCi-i:o; ;i;i;i; i:; I" isolated; T; [iCi.i;o; ;i;i;i; i;; I" isolated; T; [iCiDio; ;i;i;i; i>; I" isolated; T; [iCiJi?o; ;i;i;i; i?; I" isolated; T; [iDi,i@o; ;i;i;i; i@; I" isolated; T; [iDi-iAo; ;i;i;i; iA; I" isolated; T; [iDi.iBo; ;i;i;i; iB; I" isolated; T; [iDiEiCo; ;i;i;i; iC; I" isolated; T; [iDiIiDo; ;i;i;i; iD; I" isolated; T; [iDiJiEo; ;i;i;i; iE; I" isolated; T; [iEi,iFo; ;i;i;i; iF; I" isolated; T; [iEi-iGo; ;i;i;i; iG; I" isolated; T; [iEi.iHo; ;i;i;i; iH; I" isolated; T; [iEiEiIo; ;i;i;i; iI; I" isolated; T; [iEiIiJo; ;i;i;i; iJ; I" isolated; T; [iEiJiKo; ;i;i;i; iK; I" isolated; T; [iFi,iLo; ;i;i;i; iL; I" isolated; T; [iFi-iMo; ;i;i;i; iM; I" isolated; T; [iFi.iNo; ;i;i;i; iN; I" isolated; T; [iFiEiOo; ;i;i;i; iO; I" isolated; T; [iFiIiPo; ;i;i;i; iP; I" isolated; T; [iFiJiQo; ;i;i;i; iQ; I" isolated; T; [iGi,iRo; ;i;i;i; iR; I" isolated; T; [iGiEiSo; ;i;i;i; iS; I" isolated; T; [iGiIiTo; ;i;i;i; iT; I" isolated; T; [iGiJiUo; ;i;i;i; iU; I" isolated; T; [iJi,iVo; ;i;i;i; iV; I" isolated; T; [iJi-iWo; ;i;i;i; iW; I" isolated; T; [iJi.iXo; ;i;i;i; iX; I" isolated; T; [iJiEiYo; ;i;i;i; iY; I" isolated; T; [iJiIiZo; ;i;i;i; iZ; I" isolated; T; [iJiJi[o; ;i;i;i; i[; I" isolated; T; [i0ipi\o; ;i;i;i; i\; I" isolated; T; [i1ipi]o; ;i;i;i; i]; I" isolated; T; [iIipi^o; ;i;i;i; i^; I" isolated; T; [i%iLiQi_o; ;i;i;i; i_; I" isolated; T; [i%iMiQi`o; ;i;i;i; i`; I" isolated; T; [i%iNiQiao; ;i;i;i; ia; I" isolated; T; [i%iOiQibo; ;i;i;i; ib; I" isolated; T; [i%iPiQico; ;i;i;i; ic; I" isolated; T; [i%iQipido; ;i;i;i; id; I" final; T; [i&i1ieo; ;i;i;i; ie; I" final; T; [i&i2ifo; ;i;i;i; if; I" final; T; [i&iEigo; ;i;i;i; ig; I" final; T; [i&iFiho; ;i;i;i; ih; I" final; T; [i&iIiio; ;i;i;i; ii; I" final; T; [i&iJijo; ;i;i;i; ij; I" final; T; [i(i1iko; ;i;i;i; ik; I" final; T; [i(i2ilo; ;i;i;i; il; I" final; T; [i(iEimo; ;i;i;i; im; I" final; T; [i(iFino; ;i;i;i; in; I" final; T; [i(iIioo; ;i;i;i; io; I" final; T; [i(iJipo; ;i;i;i; ip; I" final; T; [i*i1iqo; ;i;i;i; iq; I" final; T; [i*i2iro; ;i;i;i; ir; I" final; T; [i*iEiso; ;i;i;i; is; I" final; T; [i*iFito; ;i;i;i; it; I" final; T; [i*iIiuo; ;i;i;i; iu; I" final; T; [i*iJivo; ;i;i;i; iv; I" final; T; [i+i1iwo; ;i;i;i; iw; I" final; T; [i+i2ixo; ;i;i;i; ix; I" final; T; [i+iEiyo; ;i;i;i; iy; I" final; T; [i+iFizo; ;i;i;i; iz; I" final; T; [i+iIi{o; ;i;i;i; i{; I" final; T; [i+iJi|o; ;i;i;i; i|; I" final; T; [iAiIi}o; ;i;i;i; i}; I" final; T; [iAiJi~o; ;i;i;i; i~; I" final; T; [iBiIio; ;i;i;i; i; I" final; T; [iBiJio; ;i;i;i; i; I" final; T; [iCi'io; ;i;i;i; i; I" final; T; [iCiDio; ;i;i;i; i; I" final; T; [iCiEio; ;i;i;i; i; I" final; T; [iCiIio; ;i;i;i; i; I" final; T; [iCiJio; ;i;i;i; i; I" final; T; [iDiEio; ;i;i;i; i; I" final; T; [iDiIio; ;i;i;i; i; I" final; T; [iDiJio; ;i;i;i; i; I" final; T; [iEi'io; ;i;i;i; i; I" final; T; [iEiEio; ;i;i;i; i; I" final; T; [iFi1io; ;i;i;i; i; I" final; T; [iFi2io; ;i;i;i; i; I" final; T; [iFiEio; ;i;i;i; i; I" final; T; [iFiFio; ;i;i;i; i; I" final; T; [iFiIio; ;i;i;i; i; I" final; T; [iFiJio; ;i;i;i; i; I" final; T; [iIipio; ;i;i;i; i; I" final; T; [iJi1io; ;i;i;i; i; I" final; T; [iJi2io; ;i;i;i; i; I" final; T; [iJiEio; ;i;i;i; i; I" final; T; [iJiFio; ;i;i;i; i; I" final; T; [iJiIio; ;i;i;i; i; I" final; T; [iJiJio; ;i;i;i; i; I" initial; T; [i&i,io; ;i;i;i; i; I" initial; T; [i&i-io; ;i;i;i; i; I" initial; T; [i&i.io; ;i;i;i; i; I" initial; T; [i&iEio; ;i;i;i; i; I" initial; T; [i&iGio; ;i;i;i; i; I" initial; T; [i(i,io; ;i;i;i; i; I" initial; T; [i(i-io; ;i;i;i; i; I" initial; T; [i(i.io; ;i;i;i; i; I" initial; T; [i(iEio; ;i;i;i; i; I" initial; T; [i(iGio; ;i;i;i; i; I" initial; T; [i*i,io; ;i;i;i; i; I" initial; T; [i*i-io; ;i;i;i; i; I" initial; T; [i*i.io; ;i;i;i; i; I" initial; T; [i*iEio; ;i;i;i; i; I" initial; T; [i*iGio; ;i;i;i; i; I" initial; T; [i+iEio; ;i;i;i; i; I" initial; T; [i,i-io; ;i;i;i; i; I" initial; T; [i,iEio; ;i;i;i; i; I" initial; T; [i-i,io; ;i;i;i; i; I" initial; T; [i-iEio; ;i;i;i; i; I" initial; T; [i.i,io; ;i;i;i; i; I" initial; T; [i.iEio; ;i;i;i; i; I" initial; T; [i3i,io; ;i;i;i; i; I" initial; T; [i3i-io; ;i;i;i; i; I" initial; T; [i3i.io; ;i;i;i; i; I" initial; T; [i3iEio; ;i;i;i; i; I" initial; T; [i5i-io; ;i;i;i; i; I" initial; T; [i5i.io; ;i;i;i; i; I" initial; T; [i5iEio; ;i;i;i; i; I" initial; T; [i6i,io; ;i;i;i; i; I" initial; T; [i6i-io; ;i;i;i; i; I" initial; T; [i6i.io; ;i;i;i; i; I" initial; T; [i6iEio; ;i;i;i; i; I" initial; T; [i7i-io; ;i;i;i; i; I" initial; T; [i8iEio; ;i;i;i; i; I" initial; T; [i9i,io; ;i;i;i; i; I" initial; T; [i9iEio; ;i;i;i; i; I" initial; T; [i:i,io; ;i;i;i; i; I" initial; T; [i:iEio; ;i;i;i; i; I" initial; T; [iAi,io; ;i;i;i; i; I" initial; T; [iAi-io; ;i;i;i; i; I" initial; T; [iAi.io; ;i;i;i; i; I" initial; T; [iAiEio; ;i;i;i; i; I" initial; T; [iBi-io; ;i;i;i; i; I" initial; T; [iBiEio; ;i;i;i; i; I" initial; T; [iCi,io; ;i;i;i; i; I" initial; T; [iCi-io; ;i;i;i; i; I" initial; T; [iCi.io; ;i;i;i; i; I" initial; T; [iCiDio; ;i;i;i; i; I" initial; T; [iCiEio; ;i;i;i; i; I" initial; T; [iDi,io; ;i;i;i; i; I" initial; T; [iDi-io; ;i;i;i; i; I" initial; T; [iDi.io; ;i;i;i; i; I" initial; T; [iDiEio; ;i;i;i; i; I" initial; T; [iDiGio; ;i;i;i; i; I" initial; T; [iEi,io; ;i;i;i; i; I" initial; T; [iEi-io; ;i;i;i; i; I" initial; T; [iEi.io; ;i;i;i; i; I" initial; T; [iEiEio; ;i;i;i; i; I" initial; T; [iFi,io; ;i;i;i; i; I" initial; T; [iFi-io; ;i;i;i; i; I" initial; T; [iFi.io; ;i;i;i; i; I" initial; T; [iFiEio; ;i;i;i; i; I" initial; T; [iFiGio; ;i;i;i; i; I" initial; T; [iGi,io; ;i;i;i; i; I" initial; T; [iGiEio; ;i;i;i; i; I" initial; T; [iGipio; ;i;i;i; i; I" initial; T; [iJi,io; ;i;i;i; i; I" initial; T; [iJi-io; ;i;i;i; i; I" initial; T; [iJi.io; ;i;i;i; i; I" initial; T; [iJiEio; ;i;i;i; i; I" initial; T; [iJiGio; ;i;i;i; i; I" medial; T; [i&iEio; ;i;i;i; i; I" medial; T; [i&iGio; ;i;i;i; i; I" medial; T; [i(iEio; ;i;i;i; i; I" medial; T; [i(iGio; ;i;i;i; i; I" medial; T; [i*iEio; ;i;i;i; i; I" medial; T; [i*iGio; ;i;i;i; i; I" medial; T; [i+iEio; ;i;i;i; i; I" medial; T; [i+iGio; ;i;i;i; i; I" medial; T; [i3iEio; ;i;i;i; i; I" medial; T; [i3iGio; ;i;i;i; i; I" medial; T; [i4iEio; ;i;i;i; i; I" medial; T; [i4iGio; ;i;i;i; i; I" medial; T; [iCiDio; ;i;i;i; i; I" medial; T; [iCiEio; ;i;i;i; i; I" medial; T; [iDiEio; ;i;i;i; i; I" medial; T; [iFiEio; ;i;i;i; i; I" medial; T; [iFiGio; ;i;i;i; i; I" medial; T; [iJiEio; ;i;i;i; i; I" medial; T; [iJiGio; ;i;i;i; i; I" medial; T; [i@iNiQio; ;i;i;i; i; I" medial; T; [i@iOiQio; ;i;i;i; i; I" medial; T; [i@iPiQio; ;i;i;i; i; I" isolated; T; [i7iIio; ;i;i;i; i; I" isolated; T; [i7iJio; ;i;i;i; i; I" isolated; T; [i9iIio; ;i;i;i; i; I" isolated; T; [i9iJio; ;i;i;i; i; I" isolated; T; [i:iIio; ;i;i;i; i; I" isolated; T; [i:iJio; ;i;i;i; i; I" isolated; T; [i3iIio; ;i;i;i; i; I" isolated; T; [i3iJio; ;i;i;i; i; I" isolated; T; [i4iIio; ;i;i;i; i; I" isolated; T; [i4iJio; ;i;i;i; i; I" isolated; T; [i-iIio; ;i;i;i; i; I" isolated; T; [i-iJio; ;i;i;i; i; I" isolated; T; [i,iIio; ;i;i;i; i; I" isolated; T; [i,iJio; ;i;i;i; i; I" isolated; T; [i.iIio; ;i;i;i; i; I" isolated; T; [i.iJio; ;i;i;i; i; I" isolated; T; [i5iIio; ;i;i;i; i; I" isolated; T; [i5iJio; ;i;i;i; i; I" isolated; T; [i6iIio; ;i;i;i; i; I" isolated; T; [i6iJi o; ;i;i;i; i ; I" isolated; T; [i4i,i o; ;i;i;i; i ; I" isolated; T; [i4i-i o; ;i;i;i; i ; I" isolated; T; [i4i.i o; ;i;i;i; i ; I" isolated; T; [i4iEi o; ;i;i;i; i ; I" isolated; T; [i4i1io; ;i;i;i; i; I" isolated; T; [i3i1io; ;i;i;i; i; I" isolated; T; [i5i1io; ;i;i;i; i; I" isolated; T; [i6i1io; ;i;i;i; i; I" final; T; [i7iIio; ;i;i;i; i; I" final; T; [i7iJio; ;i;i;i; i; I" final; T; [i9iIio; ;i;i;i; i; I" final; T; [i9iJio; ;i;i;i; i; I" final; T; [i:iIio; ;i;i;i; i; I" final; T; [i:iJio; ;i;i;i; i; I" final; T; [i3iIio; ;i;i;i; i; I" final; T; [i3iJio; ;i;i;i; i; I" final; T; [i4iIio; ;i;i;i; i; I" final; T; [i4iJio; ;i;i;i; i; I" final; T; [i-iIio; ;i;i;i; i; I" final; T; [i-iJio; ;i;i;i; i; I" final; T; [i,iIio; ;i;i;i; i; I" final; T; [i,iJio; ;i;i;i; i; I" final; T; [i.iIi o; ;i;i;i; i ; I" final; T; [i.iJi!o; ;i;i;i; i!; I" final; T; [i5iIi"o; ;i;i;i; i"; I" final; T; [i5iJi#o; ;i;i;i; i#; I" final; T; [i6iIi$o; ;i;i;i; i$; I" final; T; [i6iJi%o; ;i;i;i; i%; I" final; T; [i4i,i&o; ;i;i;i; i&; I" final; T; [i4i-i'o; ;i;i;i; i'; I" final; T; [i4i.i(o; ;i;i;i; i(; I" final; T; [i4iEi)o; ;i;i;i; i); I" final; T; [i4i1i*o; ;i;i;i; i*; I" final; T; [i3i1i+o; ;i;i;i; i+; I" final; T; [i5i1i,o; ;i;i;i; i,; I" final; T; [i6i1i-o; ;i;i;i; i-; I" initial; T; [i4i,i.o; ;i;i;i; i.; I" initial; T; [i4i-i/o; ;i;i;i; i/; I" initial; T; [i4i.i0o; ;i;i;i; i0; I" initial; T; [i4iEi1o; ;i;i;i; i1; I" initial; T; [i3iGi2o; ;i;i;i; i2; I" initial; T; [i4iGi3o; ;i;i;i; i3; I" initial; T; [i7iEi4o; ;i;i;i; i4; I" medial; T; [i3i,i5o; ;i;i;i; i5; I" medial; T; [i3i-i6o; ;i;i;i; i6; I" medial; T; [i3i.i7o; ;i;i;i; i7; I" medial; T; [i4i,i8o; ;i;i;i; i8; I" medial; T; [i4i-i9o; ;i;i;i; i9; I" medial; T; [i4i.i:o; ;i;i;i; i:; I" medial; T; [i7iEi;o; ;i;i;i; i;; I" medial; T; [i8iEio; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0iPo; ;i;i;i; iP; I" initial; T; [i*i,iEiQo; ;i;i;i; iQ; I" final; T; [i*i-i,iRo; ;i;i;i; iR; I" initial; T; [i*i-i,iSo; ;i;i;i; iS; I" initial; T; [i*i-iEiTo; ;i;i;i; iT; I" initial; T; [i*i.iEiUo; ;i;i;i; iU; I" initial; T; [i*iEi,iVo; ;i;i;i; iV; I" initial; T; [i*iEi-iWo; ;i;i;i; iW; I" initial; T; [i*iEi.iXo; ;i;i;i; iX; I" final; T; [i,iEi-iYo; ;i;i;i; iY; I" initial; T; [i,iEi-iZo; ;i;i;i; iZ; I" final; T; [i-iEiJi[o; ;i;i;i; i[; I" final; T; [i-iEiIi\o; ;i;i;i; i\; I" initial; T; [i3i-i,i]o; ;i;i;i; i]; I" initial; T; [i3i,i-i^o; ;i;i;i; i^; I" final; T; [i3i,iIi_o; ;i;i;i; i_; I" final; T; [i3iEi-i`o; ;i;i;i; i`; I" initial; T; [i3iEi-iao; ;i;i;i; ia; I" initial; T; [i3iEi,ibo; ;i;i;i; ib; I" final; T; [i3iEiEico; ;i;i;i; ic; I" initial; T; [i3iEiEido; ;i;i;i; id; I" final; T; [i5i-i-ieo; ;i;i;i; ie; I" initial; T; [i5i-i-ifo; ;i;i;i; if; I" final; T; [i5iEiEigo; ;i;i;i; ig; I" final; T; [i4i-iEiho; ;i;i;i; ih; I" initial; T; [i4i-iEiio; ;i;i;i; ii; I" final; T; [i4i,iJijo; ;i;i;i; ij; I" final; T; [i4iEi.iko; ;i;i;i; ik; I" initial; T; [i4iEi.ilo; ;i;i;i; il; I" final; T; [i4iEiEimo; ;i;i;i; im; I" initial; T; [i4iEiEino; ;i;i;i; in; I" final; T; [i6i-iIioo; ;i;i;i; io; I" final; T; [i6i.iEipo; ;i;i;i; ip; I" initial; T; [i6i.iEiqo; ;i;i;i; iq; I" final; T; [i7iEi-iro; ;i;i;i; ir; I" initial; T; [i7iEi-iso; ;i;i;i; is; I" initial; T; [i7iEiEito; ;i;i;i; it; I" final; T; [i7iEiJiuo; ;i;i;i; iu; I" final; T; [i9i,iEivo; ;i;i;i; iv; I" final; T; [i9iEiEiwo; ;i;i;i; iw; I" initial; T; [i9iEiEixo; ;i;i;i; ix; I" final; T; [i9iEiIiyo; ;i;i;i; iy; I" final; T; [i:iEiEizo; ;i;i;i; iz; I" final; T; [i:iEiJi{o; ;i;i;i; i{; I" final; T; [i:iEiIi|o; ;i;i;i; i|; I" final; T; [iAi.iEi}o; ;i;i;i; i}; I" initial; T; [iAi.iEi~o; ;i;i;i; i~; I" final; T; [iBiEi-io; ;i;i;i; i; I" final; T; [iBiEiEio; ;i;i;i; i; I" final; T; [iDi-iEio; ;i;i;i; i; I" final; T; [iDi-iJio; ;i;i;i; i; I" final; T; [iDi-iIio; ;i;i;i; i; I" initial; T; [iDi,i,io; ;i;i;i; i; I" final; T; [iDi,i,io; ;i;i;i; i; I" final; T; [iDi.iEio; ;i;i;i; i; I" initial; T; [iDi.iEio; ;i;i;i; i; I" final; T; [iDiEi-io; ;i;i;i; i; I" initial; T; [iDiEi-io; ;i;i;i; i; I" initial; T; [iEi-i,io; ;i;i;i; i; I" initial; T; [iEi-iEio; ;i;i;i; i; I" final; T; [iEi-iJio; ;i;i;i; i; I" initial; T; [iEi,i-io; ;i;i;i; i; I" initial; T; [iEi,iEio; ;i;i;i; i; I" initial; T; [iEi.i,io; ;i;i;i; i; I" initial; T; [iEi.iEio; ;i;i;i; i; I" initial; T; [iEi,i.io; ;i;i;i; i; I" initial; T; [iGiEi,io; ;i;i;i; i; I" initial; T; [iGiEiEio; ;i;i;i; i; I" initial; T; [iFi-iEio; ;i;i;i; i; I" final; T; [iFi-iIio; ;i;i;i; i; I" final; T; [iFi,iEio; ;i;i;i; i; I" initial; T; [iFi,iEio; ;i;i;i; i; I" final; T; [iFi,iIio; ;i;i;i; i; I" final; T; [iFiEiJio; ;i;i;i; i; I" final; T; [iFiEiIio; ;i;i;i; i; I" final; T; [iJiEiEio; ;i;i;i; i; I" initial; T; [iJiEiEio; ;i;i;i; i; I" final; T; [i(i.iJio; ;i;i;i; i; I" final; T; [i*i,iJio; ;i;i;i; i; I" final; T; [i*i,iIio; ;i;i;i; i; I" final; T; [i*i.iJio; ;i;i;i; i; I" final; T; [i*i.iIio; ;i;i;i; i; I" final; T; [i*iEiJio; ;i;i;i; i; I" final; T; [i*iEiIio; ;i;i;i; i; I" final; T; [i,iEiJio; ;i;i;i; i; I" final; T; [i,i-iIio; ;i;i;i; i; I" final; T; [i,iEiIio; ;i;i;i; i; I" final; T; [i3i.iIio; ;i;i;i; i; I" final; T; [i5i-iJio; ;i;i;i; i; I" final; T; [i4i-iJio; ;i;i;i; i; I" final; T; [i6i-iJio; ;i;i;i; i; I" final; T; [iDi,iJio; ;i;i;i; i; I" final; T; [iDiEiJio; ;i;i;i; i; I" final; T; [iJi-iJio; ;i;i;i; i; I" final; T; [iJi,iJio; ;i;i;i; i; I" final; T; [iJiEiJio; ;i;i;i; i; I" final; T; [iEiEiJio; ;i;i;i; i; I" final; T; [iBiEiJio; ;i;i;i; i; I" final; T; [iFi-iJio; ;i;i;i; i; I" initial; T; [iBiEi-io; ;i;i;i; i; I" initial; T; [iDi-iEio; ;i;i;i; i; I" final; T; [i9iEiJio; ;i;i;i; i; I" final; T; [iCiEiJio; ;i;i;i; i; I" initial; T; [iFi,i-io; ;i;i;i; i; I" final; T; [iEi.iJio; ;i;i;i; i; I" initial; T; [iDi,iEio; ;i;i;i; i; I" final; T; [iCiEiEio; ;i;i;i; i; I" final; T; [iDi,iEio; ;i;i;i; i; I" final; T; [iFi,i-io; ;i;i;i; i; I" final; T; [i,i-iJio; ;i;i;i; i; I" final; T; [i-i,iJio; ;i;i;i; i; I" final; T; [iEi,iJio; ;i;i;i; i; I" final; T; [iAiEiJio; ;i;i;i; i; I" final; T; [i(i-iJio; ;i;i;i; i; I" initial; T; [iCiEiEio; ;i;i;i; i; I" initial; T; [i9i,iEio; ;i;i;i; i; I" initial; T; [i5iEiEio; ;i;i;i; i; I" final; T; [i3i.iJio; ;i;i;i; i; I" final; T; [iFi,iJio; ;i;i;i; i; I" isolated; T; [i5iDiio; ;i;i;i; i; I" isolated; T; [iBiDiio; ;i;i;i; i; I" isolated; T; [ i'iDiDiGio; ;i;i;i; i; I" isolated; T; [ i'iCi(i1io; ;i;i;i; i; I" isolated; T; [ iEi-iEi/io; ;i;i;i; i; I" isolated; T; [ i5iDi9iEio; ;i;i;i; i; I" isolated; T; [ i1i3iHiDio; ;i;i;i; i; I" isolated; T; [ i9iDiJiGio; ;i;i;i; i; I" isolated; T; [ iHi3iDiEio; ;i;i;i; i; I" isolated; T; [i5iDiIio; ;i;i;i; i; I" isolated; T; [i5iDiIi%i'iDiDiGi%i9iDiJiGi%iHi3iDiEio; ;i;i;i; i; I" isolated; T; [ i,iDi%i,iDi'iDiGio; ;i;i;i; i; I" isolated; T; [ i1ii'iDio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" vertical; T; [i1io; ;i;i;i; i; I" vertical; T; [i0io; ;i;i;i; i; I" vertical; T; [i0io; ;i;i;i; i; I" vertical; T; [i?io; ;i;i;i; i; I" vertical; T; [i@io; ;i;i;i; i; I" vertical; T; [i&io; ;i;i;i; i; I" vertical; T; [iDio; ;i;i;i; i; I" vertical; T; [i0io; ;i;i;i; i; I" vertical; T; [i0io; ;i;i;i; i; I" vertical; T; [i& i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i0o; ;i;i;i; i0; I" vertical; T; [i% i1o; ;i;i;i; i1; I" vertical; T; [i i2o; ;i;i;i; i2; I" vertical; T; [i i3o; ;i;i;i; i3; I" vertical; T; [idi4o; ;i;i;i; i4; I" vertical; T; [idi5o; ;i;i;i; i5; I" vertical; T; [i-i6o; ;i;i;i; i6; I" vertical; T; [i.i7o; ;i;i;i; i7; I" vertical; T; [i{i8o; ;i;i;i; i8; I" vertical; T; [i}i9o; ;i;i;i; i9; I" vertical; T; [i0i:o; ;i;i;i; i:; I" vertical; T; [i0i;o; ;i;i;i; i;; I" vertical; T; [i0io; ;i;i;i; i>; I" vertical; T; [i 0i?o; ;i;i;i; i?; I" vertical; T; [i0i@o; ;i;i;i; i@; I" vertical; T; [i 0iAo; ;i;i;i; iA; I" vertical; T; [i 0iBo; ;i;i;i; iB; I" vertical; T; [i 0iCo; ;i;i;i; iC; I" vertical; T; [i0iDo; ;i;i;i; iD; I" vertical; T; [i0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; I" vertical; T; [i`iHo; ;i;i;i; iH; I" vertical; T; [ibiIo; ;i;i;i; iI; I" compat; T; [i> iJo; ;i;i;i; iJ; I" compat; T; [i> iKo; ;i;i;i; iK; I" compat; T; [i> iLo; ;i;i;i; iL; I" compat; T; [i> iMo; ;i;i;i; iM; I" compat; T; [idiNo; ;i;i;i; iN; I" compat; T; [idiOo; ;i;i;i; iO; I" compat; T; [idiPo; ;i;i;i; iP; I" small; T; [i1iQo; ;i;i;i; iQ; I" small; T; [i0iRo; ;i;i;i; iR; I" small; T; [i3iTo; ;i;i;i; iT; I" small; T; [i@iUo; ;i;i;i; iU; I" small; T; [i?iVo; ;i;i;i; iV; I" small; T; [iDiWo; ;i;i;i; iW; I" small; T; [i&iXo; ;i;i;i; iX; I" small; T; [i iYo; ;i;i;i; iY; I" small; T; [i-iZo; ;i;i;i; iZ; I" small; T; [i.i[o; ;i;i;i; i[; I" small; T; [i{i\o; ;i;i;i; i\; I" small; T; [i}i]o; ;i;i;i; i]; I" small; T; [i0i^o; ;i;i;i; i^; I" small; T; [i0i_o; ;i;i;i; i_; I" small; T; [i(i`o; ;i;i;i; i`; I" small; T; [i+iao; ;i;i;i; ia; I" small; T; [i/ibo; ;i;i;i; ib; I" small; T; [i0ico; ;i;i;i; ic; I" small; T; [i2ido; ;i;i;i; id; I" small; T; [iAieo; ;i;i;i; ie; I" small; T; [iCifo; ;i;i;i; if; I" small; T; [iBiho; ;i;i;i; ih; I" small; T; [iaiio; ;i;i;i; ii; I" small; T; [i)ijo; ;i;i;i; ij; I" small; T; [i*iko; ;i;i;i; ik; I" small; T; [iEipo; ;i;i;i; ip; I" isolated; T; [i%iKiqo; ;i;i;i; iq; I" medial; T; [i@iKiro; ;i;i;i; ir; I" isolated; T; [i%iLiso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; I" isolated; T; [i%iMivo; ;i;i;i; iv; I" isolated; T; [i%iNiwo; ;i;i;i; iw; I" medial; T; [i@iNixo; ;i;i;i; ix; I" isolated; T; [i%iOiyo; ;i;i;i; iy; I" medial; T; [i@iOizo; ;i;i;i; iz; I" isolated; T; [i%iPi{o; ;i;i;i; i{; I" medial; T; [i@iPi|o; ;i;i;i; i|; I" isolated; T; [i%iQi}o; ;i;i;i; i}; I" medial; T; [i@iQi~o; ;i;i;i; i~; I" isolated; T; [i%iRio; ;i;i;i; i; I" medial; T; [i@iRio; ;i;i;i; i; I" isolated; T; [i!io; ;i;i;i; i; I" isolated; T; [i"io; ;i;i;i; i; I" final; T; [i"io; ;i;i;i; i; I" isolated; T; [i#io; ;i;i;i; i; I" final; T; [i#io; ;i;i;i; i; I" isolated; T; [i$io; ;i;i;i; i; I" final; T; [i$io; ;i;i;i; i; I" isolated; T; [i%io; ;i;i;i; i; I" final; T; [i%io; ;i;i;i; i; I" isolated; T; [i&io; ;i;i;i; i; I" final; T; [i&io; ;i;i;i; i; I" initial; T; [i&io; ;i;i;i; i; I" medial; T; [i&io; ;i;i;i; i; I" isolated; T; [i'io; ;i;i;i; i; I" final; T; [i'io; ;i;i;i; i; I" isolated; T; [i(io; ;i;i;i; i; I" final; T; [i(io; ;i;i;i; i; I" initial; T; [i(io; ;i;i;i; i; I" medial; T; [i(io; ;i;i;i; i; I" isolated; T; [i)io; ;i;i;i; i; I" final; T; [i)io; ;i;i;i; i; I" isolated; T; [i*io; ;i;i;i; i; I" final; T; [i*io; ;i;i;i; i; I" initial; T; [i*io; ;i;i;i; i; I" medial; T; [i*io; ;i;i;i; i; I" isolated; T; [i+io; ;i;i;i; i; I" final; T; [i+io; ;i;i;i; i; I" initial; T; [i+io; ;i;i;i; i; I" medial; T; [i+io; ;i;i;i; i; I" isolated; T; [i,io; ;i;i;i; i; I" final; T; [i,io; ;i;i;i; i; I" initial; T; [i,io; ;i;i;i; i; I" medial; T; [i,io; ;i;i;i; i; I" isolated; T; [i-io; ;i;i;i; i; I" final; T; [i-io; ;i;i;i; i; I" initial; T; [i-io; ;i;i;i; i; I" medial; T; [i-io; ;i;i;i; i; I" isolated; T; [i.io; ;i;i;i; i; I" final; T; [i.io; ;i;i;i; i; I" initial; T; [i.io; ;i;i;i; i; I" medial; T; [i.io; ;i;i;i; i; I" isolated; T; [i/io; ;i;i;i; i; I" final; T; [i/io; ;i;i;i; i; I" isolated; T; [i0io; ;i;i;i; i; I" final; T; [i0io; ;i;i;i; i; I" isolated; T; [i1io; ;i;i;i; i; I" final; T; [i1io; ;i;i;i; i; I" isolated; T; [i2io; ;i;i;i; i; I" final; T; [i2io; ;i;i;i; i; I" isolated; T; [i3io; ;i;i;i; i; I" final; T; [i3io; ;i;i;i; i; I" initial; T; [i3io; ;i;i;i; i; I" medial; T; [i3io; ;i;i;i; i; I" isolated; T; [i4io; ;i;i;i; i; I" final; T; [i4io; ;i;i;i; i; I" initial; T; [i4io; ;i;i;i; i; I" medial; T; [i4io; ;i;i;i; i; I" isolated; T; [i5io; ;i;i;i; i; I" final; T; [i5io; ;i;i;i; i; I" initial; T; [i5io; ;i;i;i; i; I" medial; T; [i5io; ;i;i;i; i; I" isolated; T; [i6io; ;i;i;i; i; I" final; T; [i6io; ;i;i;i; i; I" initial; T; [i6io; ;i;i;i; i; I" medial; T; [i6io; ;i;i;i; i; I" isolated; T; [i7io; ;i;i;i; i; I" final; T; [i7io; ;i;i;i; i; I" initial; T; [i7io; ;i;i;i; i; I" medial; T; [i7io; ;i;i;i; i; I" isolated; T; [i8io; ;i;i;i; i; I" final; T; [i8io; ;i;i;i; i; I" initial; T; [i8io; ;i;i;i; i; I" medial; T; [i8io; ;i;i;i; i; I" isolated; T; [i9io; ;i;i;i; i; I" final; T; [i9io; ;i;i;i; i; I" initial; T; [i9io; ;i;i;i; i; I" medial; T; [i9io; ;i;i;i; i; I" isolated; T; [i:io; ;i;i;i; i; I" final; T; [i:io; ;i;i;i; i; I" initial; T; [i:io; ;i;i;i; i; I" medial; T; [i:io; ;i;i;i; i; I" isolated; T; [iAio; ;i;i;i; i; I" final; T; [iAio; ;i;i;i; i; I" initial; T; [iAio; ;i;i;i; i; I" medial; T; [iAio; ;i;i;i; i; I" isolated; T; [iBio; ;i;i;i; i; I" final; T; [iBio; ;i;i;i; i; I" initial; T; [iBio; ;i;i;i; i; I" medial; T; [iBio; ;i;i;i; i; I" isolated; T; [iCio; ;i;i;i; i; I" final; T; [iCio; ;i;i;i; i; I" initial; T; [iCio; ;i;i;i; i; I" medial; T; [iCio; ;i;i;i; i; I" isolated; T; [iDio; ;i;i;i; i; I" final; T; [iDio; ;i;i;i; i; I" initial; T; [iDio; ;i;i;i; i; I" medial; T; [iDio; ;i;i;i; i; I" isolated; T; [iEio; ;i;i;i; i; I" final; T; [iEio; ;i;i;i; i; I" initial; T; [iEio; ;i;i;i; i; I" medial; T; [iEio; ;i;i;i; i; I" isolated; T; [iFio; ;i;i;i; i; I" final; T; [iFio; ;i;i;i; i; I" initial; T; [iFio; ;i;i;i; i; I" medial; T; [iFio; ;i;i;i; i; I" isolated; T; [iGio; ;i;i;i; i; I" final; T; [iGio; ;i;i;i; i; I" initial; T; [iGio; ;i;i;i; i; I" medial; T; [iGio; ;i;i;i; i; I" isolated; T; [iHio; ;i;i;i; i; I" final; T; [iHio; ;i;i;i; i; I" isolated; T; [iIio; ;i;i;i; i; I" final; T; [iIio; ;i;i;i; i; I" isolated; T; [iJio; ;i;i;i; i; I" final; T; [iJio; ;i;i;i; i; I" initial; T; [iJio; ;i;i;i; i; I" medial; T; [iJio; ;i;i;i; i; I" isolated; T; [iDi"io; ;i;i;i; i; I" final; T; [iDi"io; ;i;i;i; i; I" isolated; T; [iDi#io; ;i;i;i; i; I" final; T; [iDi#io; ;i;i;i; i; I" isolated; T; [iDi%io; ;i;i;i; i; I" final; T; [iDi%io; ;i;i;i; i; I" isolated; T; [iDi'io; ;i;i;i; i; I" final; T; [iDi'io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" wide; T; [i&io; ;i;i;i; i; I" wide; T; [i'io; ;i;i;i; i; I" wide; T; [i(io; ;i;i;i; i; I" wide; T; [i)io; ;i;i;i; i; I" wide; T; [i*io; ;i;i;i; i; I" wide; T; [i+io; ;i;i;i; i; I" wide; T; [i,io; ;i;i;i; i; I" wide; T; [i-i o; ;i;i;i; i ; I" wide; T; [i.i o; ;i;i;i; i ; I" wide; T; [i/i o; ;i;i;i; i ; I" wide; T; [i0i o; ;i;i;i; i ; I" wide; T; [i1i o; ;i;i;i; i ; I" wide; T; [i2io; ;i;i;i; i; I" wide; T; [i3io; ;i;i;i; i; I" wide; T; [i4io; ;i;i;i; i; I" wide; T; [i5io; ;i;i;i; i; I" wide; T; [i6io; ;i;i;i; i; I" wide; T; [i7io; ;i;i;i; i; I" wide; T; [i8io; ;i;i;i; i; I" wide; T; [i9io; ;i;i;i; i; I" wide; T; [i:io; ;i;i;i; i; I" wide; T; [i;io; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [i?io; ;i;i;i; i; I" wide; T; [i@io; ;i;i;i; i; I" wide; T; [iAio; ;i;i;i; i; I" wide; T; [iBio; ;i;i;i; i; I" wide; T; [iCio; ;i;i;i; i; I" wide; T; [iDi o; ;i;i;i; i ; I" wide; T; [iEi!o; ;i;i;iA; i!; I" wide; T; [iFi"o; ;i;i;iB; i"; I" wide; T; [iGi#o; ;i;i;iC; i#; I" wide; T; [iHi$o; ;i;i;iD; i$; I" wide; T; [iIi%o; ;i;i;iE; i%; I" wide; T; [iJi&o; ;i;i;iF; i&; I" wide; T; [iKi'o; ;i;i;iG; i'; I" wide; T; [iLi(o; ;i;i;iH; i(; I" wide; T; [iMi)o; ;i;i;iI; i); I" wide; T; [iNi*o; ;i;i;iJ; i*; I" wide; T; [iOi+o; ;i;i;iK; i+; I" wide; T; [iPi,o; ;i;i;iL; i,; I" wide; T; [iQi-o; ;i;i;iM; i-; I" wide; T; [iRi.o; ;i;i;iN; i.; I" wide; T; [iSi/o; ;i;i;iO; i/; I" wide; T; [iTi0o; ;i;i;iP; i0; I" wide; T; [iUi1o; ;i;i;iQ; i1; I" wide; T; [iVi2o; ;i;i;iR; i2; I" wide; T; [iWi3o; ;i;i;iS; i3; I" wide; T; [iXi4o; ;i;i;iT; i4; I" wide; T; [iYi5o; ;i;i;iU; i5; I" wide; T; [iZi6o; ;i;i;iV; i6; I" wide; T; [i[i7o; ;i;i;iW; i7; I" wide; T; [i\i8o; ;i;i;iX; i8; I" wide; T; [i]i9o; ;i;i;iY; i9; I" wide; T; [i^i:o; ;i;i;iZ; i:; I" wide; T; [i_i;o; ;i;i;i; i;; I" wide; T; [i`io; ;i;i;i; i>; I" wide; T; [ici?o; ;i;i;i; i?; I" wide; T; [idi@o; ;i;i;i; i@; I" wide; T; [ieiAo; ;i;i!;i; iA; I" wide; T; [ifiBo; ;i;i";i; iB; I" wide; T; [igiCo; ;i;i#;i; iC; I" wide; T; [ihiDo; ;i;i$;i; iD; I" wide; T; [iiiEo; ;i;i%;i; iE; I" wide; T; [ijiFo; ;i;i&;i; iF; I" wide; T; [ikiGo; ;i;i';i; iG; I" wide; T; [iliHo; ;i;i(;i; iH; I" wide; T; [imiIo; ;i;i);i; iI; I" wide; T; [iniJo; ;i;i*;i; iJ; I" wide; T; [ioiKo; ;i;i+;i; iK; I" wide; T; [ipiLo; ;i;i,;i; iL; I" wide; T; [iqiMo; ;i;i-;i; iM; I" wide; T; [iriNo; ;i;i.;i; iN; I" wide; T; [isiOo; ;i;i/;i; iO; I" wide; T; [itiPo; ;i;i0;i; iP; I" wide; T; [iuiQo; ;i;i1;i; iQ; I" wide; T; [iviRo; ;i;i2;i; iR; I" wide; T; [iwiSo; ;i;i3;i; iS; I" wide; T; [ixiTo; ;i;i4;i; iT; I" wide; T; [iyiUo; ;i;i5;i; iU; I" wide; T; [iziVo; ;i;i6;i; iV; I" wide; T; [i{iWo; ;i;i7;i; iW; I" wide; T; [i|iXo; ;i;i8;i; iX; I" wide; T; [i}iYo; ;i;i9;i; iY; I" wide; T; [i~iZo; ;i;i:;i; iZ; I" wide; T; [ii[o; ;i;i;i; i[; I" wide; T; [i{i\o; ;i;i;i; i\; I" wide; T; [i|i]o; ;i;i;i; i]; I" wide; T; [i}i^o; ;i;i;i; i^; I" wide; T; [i~i_o; ;i;i;i; i_; I" wide; T; [i)i`o; ;i;i;i; i`; I" wide; T; [i)iao; ;i;i;i; ia; I" narrow; T; [i0ibo; ;i;i;i; ib; I" narrow; T; [i 0ico; ;i;i;i; ic; I" narrow; T; [i 0ido; ;i;i;i; id; I" narrow; T; [i0ieo; ;i;i;i; ie; I" narrow; T; [i0ifo; ;i;i;i; if; I" narrow; T; [i0igo; ;i;i;i; ig; I" narrow; T; [i0iho; ;i;i;i; ih; I" narrow; T; [i0iio; ;i;i;i; ii; I" narrow; T; [i0ijo; ;i;i;i; ij; I" narrow; T; [i0iko; ;i;i;i; ik; I" narrow; T; [i0ilo; ;i;i;i; il; I" narrow; T; [i0imo; ;i;i;i; im; I" narrow; T; [i0ino; ;i;i;i; in; I" narrow; T; [i0ioo; ;i;i;i; io; I" narrow; T; [i0ipo; ;i;i;i; ip; I" narrow; T; [i0iqo; ;i;i;i; iq; I" narrow; T; [i0iro; ;i;i;i; ir; I" narrow; T; [i0iso; ;i;i;i; is; I" narrow; T; [i0ito; ;i;i;i; it; I" narrow; T; [i0iuo; ;i;i;i; iu; I" narrow; T; [i0ivo; ;i;i;i; iv; I" narrow; T; [i0iwo; ;i;i;i; iw; I" narrow; T; [i0ixo; ;i;i;i; ix; I" narrow; T; [i0iyo; ;i;i;i; iy; I" narrow; T; [i0izo; ;i;i;i; iz; I" narrow; T; [i0i{o; ;i;i;i; i{; I" narrow; T; [i0i|o; ;i;i;i; i|; I" narrow; T; [i0i}o; ;i;i;i; i}; I" narrow; T; [i0i~o; ;i;i;i; i~; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [i0io; ;i;i;i; i; I" narrow; T; [id1io; ;i;i;i; i; I" narrow; T; [i11io; ;i;i;i; i; I" narrow; T; [i21io; ;i;i;i; i; I" narrow; T; [i31io; ;i;i;i; i; I" narrow; T; [i41io; ;i;i;i; i; I" narrow; T; [i51io; ;i;i;i; i; I" narrow; T; [i61io; ;i;i;i; i; I" narrow; T; [i71io; ;i;i;i; i; I" narrow; T; [i81io; ;i;i;i; i; I" narrow; T; [i91io; ;i;i;i; i; I" narrow; T; [i:1io; ;i;i;i; i; I" narrow; T; [i;1io; ;i;i;i; i; I" narrow; T; [i<1io; ;i;i;i; i; I" narrow; T; [i=1io; ;i;i;i; i; I" narrow; T; [i>1io; ;i;i;i; i; I" narrow; T; [i?1io; ;i;i;i; i; I" narrow; T; [i@1io; ;i;i;i; i; I" narrow; T; [iA1io; ;i;i;i; i; I" narrow; T; [iB1io; ;i;i;i; i; I" narrow; T; [iC1io; ;i;i;i; i; I" narrow; T; [iD1io; ;i;i;i; i; I" narrow; T; [iE1io; ;i;i;i; i; I" narrow; T; [iF1io; ;i;i;i; i; I" narrow; T; [iG1io; ;i;i;i; i; I" narrow; T; [iH1io; ;i;i;i; i; I" narrow; T; [iI1io; ;i;i;i; i; I" narrow; T; [iJ1io; ;i;i;i; i; I" narrow; T; [iK1io; ;i;i;i; i; I" narrow; T; [iL1io; ;i;i;i; i; I" narrow; T; [iM1io; ;i;i;i; i; I" narrow; T; [iN1io; ;i;i;i; i; I" narrow; T; [iO1io; ;i;i;i; i; I" narrow; T; [iP1io; ;i;i;i; i; I" narrow; T; [iQ1io; ;i;i;i; i; I" narrow; T; [iR1io; ;i;i;i; i; I" narrow; T; [iS1io; ;i;i;i; i; I" narrow; T; [iT1io; ;i;i;i; i; I" narrow; T; [iU1io; ;i;i;i; i; I" narrow; T; [iV1io; ;i;i;i; i; I" narrow; T; [iW1io; ;i;i;i; i; I" narrow; T; [iX1io; ;i;i;i; i; I" narrow; T; [iY1io; ;i;i;i; i; I" narrow; T; [iZ1io; ;i;i;i; i; I" narrow; T; [i[1io; ;i;i;i; i; I" narrow; T; [i\1io; ;i;i;i; i; I" narrow; T; [i]1io; ;i;i;i; i; I" narrow; T; [i^1io; ;i;i;i; i; I" narrow; T; [i_1io; ;i;i;i; i; I" narrow; T; [i`1io; ;i;i;i; i; I" narrow; T; [ia1io; ;i;i;i; i; I" narrow; T; [ib1io; ;i;i;i; i; I" narrow; T; [ic1io; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [iio; ;i;i;i; i; I" wide; T; [i io; ;i;i;i; i; I" narrow; T; [i%io; ;i;i;i; i; I" narrow; T; [i!io; ;i;i;i; i; I" narrow; T; [i!io; ;i;i;i; i; I" narrow; T; [i!io; ;i;i;i; i; I" narrow; T; [i!io; ;i;i;i; i; I" narrow; T; [i%io; ;i;i;i; i; I" narrow; T; [i%io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i(; i; 0; 0io; ;i;i;i); i; 0; 0io; ;i;i;i*; i; 0; 0io; ;i;i;i+; i; 0; 0io; ;i;i;i,; i; 0; 0io; ;i;i;i-; i; 0; 0io; ;i;i;i.; i; 0; 0io; ;i;i;i/; i; 0; 0io; ;i;i;i0; i; 0; 0i o; ;i;i;i1; i ; 0; 0i o; ;i;i;i2; i ; 0; 0i o; ;i;i;i3; i ; 0; 0i o; ;i;i;i4; i ; 0; 0i o; ;i;i;i5; i ; 0; 0io; ;i;i;i6; i; 0; 0io; ;i;i;i7; i; 0; 0io; ;i;i;i8; i; 0; 0io; ;i;i;i9; i; 0; 0io; ;i;i;i:; i; 0; 0io; ;i;i;i;; i; 0; 0io; ;i;i;i<; i; 0; 0io; ;i;i;i=; i; 0; 0io; ;i;i;i>; i; 0; 0io; ;i;i;i?; i; 0; 0io; ;i;i;i@; i; 0; 0io; ;i;i;iA; i; 0; 0io; ;i;i;iB; i; 0; 0io; ;i;i;iC; i; 0; 0io; ;i;i;iD; i; 0; 0io; ;i;i;iE; i; 0; 0io; ;i;i;iF; i; 0; 0io; ;i;i;iG; i; 0; 0i o; ;i;i;iH; i ; 0; 0i!o; ;i;i;iI; i!; 0; 0i"o; ;i;i;iJ; i"; 0; 0i#o; ;i;i;iK; i#; 0; 0i$o; ;i;i;iL; i$; 0; 0i%o; ;i;i;iM; i%; 0; 0i&o; ;i;i;iN; i&; 0; 0i'o; ;i;i;iO; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i ;i; i1; 0; 0i2o; ;i;i ;i; i2; 0; 0i3o; ;i;i ;i; i3; 0; 0i4o; ;i;i ;i; i4; 0; 0i5o; ;i;i ;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i ;i; iH; 0; 0iIo; ;i;i!;i; iI; 0; 0iJo; ;i;i";i; iJ; 0; 0iKo; ;i;i#;i; iK; 0; 0iLo; ;i;i$;i; iL; 0; 0iMo; ;i;i%;i; iM; 0; 0iNo; ;i;i&;i; iN; 0; 0iOo; ;i;i';i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ioo; ;i;i;i; io; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i<o; ;i;i;i; i<; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i? o; ;i;i;i; i? ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iP o; ;i;i;i; iP ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iR o; ;i;i;i; iR ; 0; 0iS o; ;i;i;i; iS ; 0; 0iT o; ;i;i;i; iT ; 0; 0iU o; ;i;i;i; iU ; 0; 0iV o; ;i;i;i; iV ; 0; 0iW o; ;i;i;i; iW ; 0; 0iX o; ;i;i;i; iX ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0id o; ;i;i;i; id ; 0; 0ie o; ;i;i;i; ie ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0iv o; ;i;i;i; iv ; 0; 0iw o; ;i;i;i; iw ; 0; 0ix o; ;i;i;i; ix ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i; o; ;i;i;i; i; ; 0; 0i< o; ;i;i;i; i< ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0iI o; ;i;i;i; iI ; 0; 0iJ o; ;i;i;i; iJ ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iN o; ;i;i;i; iN ; 0; 0iO o; ;i;i;i; iO ; 0; 0iP o; ;i;i;i; iP ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iR o; ;i;i;i; iR ; 0; 0iS o; ;i;i;i; iS ; 0; 0iT o; ;i;i;i; iT ; 0; 0iU o; ;i;i;i; iU ; 0; 0iX o; ;i;i;i; iX ; 0; 0iY o; ;i;i;i; iY ; 0; 0iZ o; ;i;i;i; iZ ; 0; 0i[ o; ;i;i;i; i[ ; 0; 0i\ o; ;i;i;i; i\ ; 0; 0i] o; ;i;i;i; i] ; 0; 0i^ o; ;i;i;i; i^ ; 0; 0i_ o; ;i;i;i; i_ ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0id o; ;i;i;i; id ; 0; 0ie o; ;i;i;i; ie ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0ix o; ;i;i;i; ix ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i; o; ;i;i;i; i; ; 0; 0i< o; ;i;i;i; i< ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; [i1i'i/o; ;i;i;i; i/; 0; [i2i'i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i ;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i ;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i<o; ;i ;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iKo; ;i;i;i; iK; 0; [iGi>iLo; ;i;i;i; iL; 0; [iGiWiMo; ;i;i;i; iM; 0; 0iWo; ;i;i;i; iW; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i ;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i! o; ;i;i;i; i! ; 0; 0i" o; ;i;i;i; i" ; 0; 0i# o; ;i;i;i; i# ; 0; 0i$ o; ;i;i;i; i$ ; 0; 0i% o; ;i;i;i; i% ; 0; 0i& o; ;i;i;i; i& ; 0; 0i' o; ;i;i;i; i' ; 0; 0i( o; ;i;i;i; i( ; 0; 0i) o; ;i;i;i; i) ; 0; 0i* o; ;i;i;i; i* ; 0; 0i+ o; ;i;i;i; i+ ; 0; 0i, o; ;i;i;i; i, ; 0; 0i- o; ;i;i;i; i- ; 0; 0i. o; ;i;i;i; i. ; 0; 0i/ o; ;i;i;i; i/ ; 0; 0i0 o; ;i;i;i; i0 ; 0; 0i1 o; ;i;i;i; i1 ; 0; 0i2 o; ;i;i;i; i2 ; 0; 0i3 o; ;i;i;i; i3 ; 0; 0i4 o; ;i;i;i; i4 ; 0; 0i5 o; ;i;i;i; i5 ; 0; 0i6 o; ;i;i;i; i6 ; 0; 0i7 o; ;i;i;i; i7 ; 0; 0i8 o; ;i;i;i; i8 ; 0; 0i9 o; ;i;i;i; i9 ; 0; 0i: o; ;i;i;i; i: ; 0; 0i; o; ;i;i;i; i; ; 0; 0i< o; ;i;i;i; i< ; 0; 0i= o; ;i;i;i; i= ; 0; 0i> o; ;i;i;i; i> ; 0; 0i? o; ;i;i;i; i? ; 0; 0i@ o; ;i;i;i; i@ ; 0; 0iA o; ;i;i;i; iA ; 0; 0iB o; ;i;i;i; iB ; 0; 0iC o; ;i;i;i; iC ; 0; 0iD o; ;i;i;i; iD ; 0; 0iE o; ;i;i;i; iE ; 0; 0iF o; ;i;i;i; iF ; 0; 0iG o; ;i;i;i; iG ; 0; 0iH o; ;i;i;i; iH ; 0; 0iI o; ;i;i;i; iI ; 0; 0iJ o; ;i;i;i; iJ ; 0; 0iK o; ;i;i;i; iK ; 0; 0iL o; ;i;i;i; iL ; 0; 0iM o; ;i;i;i; iM ; 0; 0iN o; ;i;i;i; iN ; 0; 0iO o; ;i;i;i; iO ; 0; 0iP o; ;i;i;i; iP ; 0; 0iQ o; ;i;i;i; iQ ; 0; 0iR o; ;i;i;i; iR ; 0; 0iS o; ;i;i;i; iS ; 0; 0iT o; ;i;i;i; iT ; 0; 0iU o; ;i;i;i; iU ; 0; 0iV o; ;i;i;i; iV ; 0; 0iW o; ;i;i;i; iW ; 0; 0iX o; ;i;i;i; iX ; 0; 0iY o; ;i;i;i; iY ; 0; 0iZ o; ;i;i;i; iZ ; 0; 0i[ o; ;i;i;i; i[ ; 0; 0i\ o; ;i;i;i; i\ ; 0; 0i] o; ;i;i;i; i] ; 0; 0i^ o; ;i;i;i; i^ ; 0; 0i_ o; ;i;i;i; i_ ; 0; 0i` o; ;i;i;i; i` ; 0; 0ia o; ;i;i;i; ia ; 0; 0ib o; ;i;i;i; ib ; 0; 0ic o; ;i;i;i; ic ; 0; 0id o; ;i;i;i; id ; 0; 0ie o; ;i;i;i; ie ; 0; 0if o; ;i;i;i; if ; 0; 0ig o; ;i;i;i; ig ; 0; 0ih o; ;i;i;i; ih ; 0; 0ii o; ;i;i;i; ii ; 0; 0ij o; ;i;i;i; ij ; 0; 0ik o; ;i;i;i; ik ; 0; 0il o; ;i;i;i; il ; 0; 0im o; ;i;i;i; im ; 0; 0in o; ;i;i;i; in ; 0; 0io o; ;i;i;i; io ; 0; 0ip o; ;i;i;i; ip ; 0; 0iq o; ;i;i;i; iq ; 0; 0ir o; ;i;i;i; ir ; 0; 0is o; ;i;i;i; is ; 0; 0it o; ;i;i;i; it ; 0; 0iu o; ;i;i;i; iu ; 0; 0iv o; ;i;i;i; iv ; 0; 0iw o; ;i;i;i; iw ; 0; 0ix o; ;i;i;i; ix ; 0; 0iy o; ;i;i;i; iy ; 0; 0iz o; ;i;i;i; iz ; 0; 0i{ o; ;i;i;i; i{ ; 0; 0i| o; ;i;i;i; i| ; 0; 0i} o; ;i;i;i; i} ; 0; 0i~ o; ;i;i;i; i~ ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i !o; ;i;i;i; i !; 0; 0i !o; ;i;i;i; i !; 0; 0i !o; ;i;i;i; i !; 0; 0i !o; ;i;i;i; i !; 0; 0i !o; ;i;i;i; i !; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i !o; ;i;i;i; i !; 0; 0i!!o; ;i;i;i; i!!; 0; 0i"!o; ;i;i;i; i"!; 0; 0i#!o; ;i;i;i; i#!; 0; 0i$!o; ;i;i;i; i$!; 0; 0i%!o; ;i;i;i; i%!; 0; 0i&!o; ;i;i;i; i&!; 0; 0i'!o; ;i;i;i; i'!; 0; 0i(!o; ;i;i;i; i(!; 0; 0i)!o; ;i;i;i; i)!; 0; 0i*!o; ;i;i;i; i*!; 0; 0i+!o; ;i;i;i; i+!; 0; 0i,!o; ;i;i;i; i,!; 0; 0i-!o; ;i;i;i; i-!; 0; 0i.!o; ;i;i;i; i.!; 0; 0i/!o; ;i;i;i; i/!; 0; 0i0!o; ;i;i;i; i0!; 0; 0i1!o; ;i;i;i; i1!; 0; 0i2!o; ;i;i;i; i2!; 0; 0i3!o; ;i;i;i; i3!; 0; 0i4!o; ;i;i;i; i4!; 0; 0i5!o; ;i;i;i; i5!; 0; 0i6!o; ;i;i;i; i6!; 0; 0i7!o; ;i;i;i; i7!; 0; 0i8!o; ;i;i;i; i8!; 0; 0i9!o; ;i;i;i; i9!; 0; 0i:!o; ;i;i;i; i:!; 0; 0i;!o; ;i;i;i; i;!; 0; 0i!o; ;i;i;i; i>!; 0; 0i?!o; ;i;i;i; i?!; 0; 0i@!o; ;i;i;i; i@!; 0; 0iA!o; ;i;i;i; iA!; 0; 0iB!o; ;i;i;i; iB!; 0; 0iC!o; ;i;i;i; iC!; 0; 0iD!o; ;i;i;i; iD!; 0; 0iE!o; ;i;i;i; iE!; 0; 0iF!o; ;i;i;i; iF!; 0; 0iG!o; ;i;i;i; iG!; 0; 0iH!o; ;i;i;i; iH!; 0; 0iI!o; ;i;i;i; iI!; 0; 0iJ!o; ;i;i;i; iJ!; 0; 0iK!o; ;i;i;i; iK!; 0; 0iL!o; ;i;i;i; iL!; 0; 0iM!o; ;i;i;i; iM!; 0; 0iN!o; ;i;i;i; iN!; 0; 0iO!o; ;i;i;i; iO!; 0; 0iP!o; ;i;i;i; iP!; 0; 0iQ!o; ;i;i;i; iQ!; 0; 0iR!o; ;i;i;i; iR!; 0; 0iS!o; ;i;i;i; iS!; 0; 0iT!o; ;i;i;i; iT!; 0; 0iU!o; ;i;i;i; iU!; 0; 0iV!o; ;i;i;i; iV!; 0; 0iW!o; ;i;i;i; iW!; 0; 0iX!o; ;i;i;i; iX!; 0; 0iY!o; ;i;i;i; iY!; 0; 0iZ!o; ;i;i;i; iZ!; 0; 0i[!o; ;i;i;i; i[!; 0; 0i\!o; ;i;i;i; i\!; 0; 0i]!o; ;i;i;i; i]!; 0; 0i^!o; ;i;i;i; i^!; 0; 0i_!o; ;i;i;i; i_!; 0; 0i`!o; ;i;i;i; i`!; 0; 0ia!o; ;i;i;i; ia!; 0; 0ib!o; ;i;i;i; ib!; 0; 0ic!o; ;i;i;i; ic!; 0; 0id!o; ;i;i;i; id!; 0; 0ie!o; ;i;i;i; ie!; 0; 0if!o; ;i;i;i; if!; 0; 0ig!o; ;i;i;i; ig!; 0; 0ih!o; ;i;i;i; ih!; 0; 0ii!o; ;i;i;i; ii!; 0; 0ij!o; ;i;i;i; ij!; 0; 0ik!o; ;i;i;i; ik!; 0; 0il!o; ;i;i;i; il!; 0; 0im!o; ;i;i;i; im!; 0; 0in!o; ;i;i;i; in!; 0; 0io!o; ;i;i;i; io!; 0; 0ip!o; ;i;i;i; ip!; 0; 0iq!o; ;i;i;i; iq!; 0; 0ir!o; ;i;i;i; ir!; 0; 0is!o; ;i;i;i; is!; 0; 0it!o; ;i;i;i; it!; 0; 0iu!o; ;i;i;i; iu!; 0; 0iv!o; ;i;i;i; iv!; 0; 0iw!o; ;i;i;i; iw!; 0; 0ix!o; ;i;i;i; ix!; 0; 0iy!o; ;i;i;i; iy!; 0; 0iz!o; ;i;i;i; iz!; 0; 0i{!o; ;i;i;i; i{!; 0; 0i|!o; ;i;i;i; i|!; 0; 0i}!o; ;i;i;i; i}!; 0; 0i~!o; ;i;i;i; i~!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i "o; ;i;i;i; i "; 0; 0i "o; ;i;i;i; i "; 0; 0i "o; ;i;i;i; i "; 0; 0i "o; ;i;i;i; i "; 0; 0i "o; ;i;i;i; i "; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i "o; ;i;i;i; i "; 0; 0i!"o; ;i;i;i; i!"; 0; 0i""o; ;i;i;i; i""; 0; 0i#"o; ;i;i;i; i#"; 0; 0i$"o; ;i;i;i; i$"; 0; 0i%"o; ;i;i;i; i%"; 0; 0i&"o; ;i;i;i; i&"; 0; 0i'"o; ;i;i;i; i'"; 0; 0i("o; ;i;i;i; i("; 0; 0i)"o; ;i;i;i; i)"; 0; 0i*"o; ;i;i;i; i*"; 0; 0i+"o; ;i;i;i; i+"; 0; 0i,"o; ;i;i;i; i,"; 0; 0i-"o; ;i;i;i; i-"; 0; 0i."o; ;i;i;i; i."; 0; 0i/"o; ;i;i;i; i/"; 0; 0i0"o; ;i;i;i; i0"; 0; 0i1"o; ;i;i;i; i1"; 0; 0i2"o; ;i;i;i; i2"; 0; 0i3"o; ;i;i;i; i3"; 0; 0i4"o; ;i;i;i; i4"; 0; 0i5"o; ;i;i;i; i5"; 0; 0i6"o; ;i;i;i; i6"; 0; 0i7"o; ;i;i;i; i7"; 0; 0i8"o; ;i;i;i; i8"; 0; 0i9"o; ;i;i;i; i9"; 0; 0i:"o; ;i;i;i; i:"; 0; 0i;"o; ;i;i;i; i;"; 0; 0i<"o; ;i;i;i; i<"; 0; 0i="o; ;i;i;i; i="; 0; 0i>"o; ;i;i;i; i>"; 0; 0i?"o; ;i;i;i; i?"; 0; 0i@"o; ;i;i;i; i@"; 0; 0iA"o; ;i;i;i; iA"; 0; 0iB"o; ;i;i;i; iB"; 0; 0iC"o; ;i;i;i; iC"; 0; 0iD"o; ;i;i;i; iD"; 0; 0iE"o; ;i;i;i; iE"; 0; 0iF"o; ;i;i;i; iF"; 0; 0iG"o; ;i;i;i; iG"; 0; 0iH"o; ;i;i;i; iH"; 0; 0iI"o; ;i;i;i; iI"; 0; 0iJ"o; ;i;i;i; iJ"; 0; 0iK"o; ;i;i;i; iK"; 0; 0iL"o; ;i;i;i; iL"; 0; 0iM"o; ;i;i;i; iM"; 0; 0iN"o; ;i;i;i; iN"; 0; 0iO"o; ;i;i;i; iO"; 0; 0iP"o; ;i;i;i; iP"; 0; 0iQ"o; ;i;i;i; iQ"; 0; 0iR"o; ;i;i;i; iR"; 0; 0iS"o; ;i;i;i; iS"; 0; 0iT"o; ;i;i;i; iT"; 0; 0iU"o; ;i;i;i; iU"; 0; 0iV"o; ;i;i;i; iV"; 0; 0iW"o; ;i;i;i; iW"; 0; 0iX"o; ;i;i;i; iX"; 0; 0iY"o; ;i;i;i; iY"; 0; 0iZ"o; ;i;i;i; iZ"; 0; 0i["o; ;i;i;i; i["; 0; 0i\"o; ;i;i;i; i\"; 0; 0i]"o; ;i;i;i; i]"; 0; 0i^"o; ;i;i;i; i^"; 0; 0i_"o; ;i;i;i; i_"; 0; 0i`"o; ;i;i;i; i`"; 0; 0ia"o; ;i;i;i; ia"; 0; 0ib"o; ;i;i;i; ib"; 0; 0ic"o; ;i;i;i; ic"; 0; 0id"o; ;i;i;i; id"; 0; 0ie"o; ;i;i;i; ie"; 0; 0if"o; ;i;i;i; if"; 0; 0ig"o; ;i;i;i; ig"; 0; 0ih"o; ;i;i;i; ih"; 0; 0ii"o; ;i;i;i; ii"; 0; 0ij"o; ;i;i;i; ij"; 0; 0ik"o; ;i;i;i; ik"; 0; 0il"o; ;i;i;i; il"; 0; 0im"o; ;i;i;i; im"; 0; 0in"o; ;i;i;i; in"; 0; 0io"o; ;i;i;i; io"; 0; 0ip"o; ;i;i;i; ip"; 0; 0iq"o; ;i;i;i; iq"; 0; 0ir"o; ;i;i;i; ir"; 0; 0is"o; ;i;i;i; is"; 0; 0it"o; ;i;i;i; it"; 0; 0iu"o; ;i;i;i; iu"; 0; 0iv"o; ;i;i;i; iv"; 0; 0iw"o; ;i;i;i; iw"; 0; 0ix"o; ;i;i;i; ix"; 0; 0iy"o; ;i;i;i; iy"; 0; 0iz"o; ;i;i;i; iz"; 0; 0i{"o; ;i;i;i; i{"; 0; 0i|"o; ;i;i;i; i|"; 0; 0i}"o; ;i;i;i; i}"; 0; 0i~"o; ;i;i;i; i~"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i #o; ;i;i;i; i #; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i #o; ;i;i;i; i #; 0; 0i!#o; ;i;i;i; i!#; 0; 0i"#o; ;i;i;i; i"#; 0; 0i##o; ;i;i;i; i##; 0; 0i$#o; ;i;i;i; i$#; 0; 0i%#o; ;i;i;i; i%#; 0; 0i&#o; ;i;i;i; i&#; 0; 0i'#o; ;i;i;i; i'#; 0; 0i(#o; ;i;i;i; i(#; 0; 0i)#o; ;i;i;i; i)#; 0; 0i*#o; ;i;i;i; i*#; 0; 0i+#o; ;i;i;i; i+#; 0; 0i,#o; ;i;i;i; i,#; 0; 0i-#o; ;i;i;i; i-#; 0; 0i.#o; ;i;i;i; i.#; 0; 0i/#o; ;i;i;i; i/#; 0; 0i0#o; ;i;i;i; i0#; 0; 0i1#o; ;i;i;i; i1#; 0; 0i2#o; ;i;i;i; i2#; 0; 0i3#o; ;i;i;i; i3#; 0; 0i4#o; ;i;i;i; i4#; 0; 0i5#o; ;i;i;i; i5#; 0; 0i6#o; ;i;i;i; i6#; 0; 0i7#o; ;i;i;i; i7#; 0; 0i8#o; ;i;i;i; i8#; 0; 0i9#o; ;i;i;i; i9#; 0; 0i:#o; ;i;i;i; i:#; 0; 0i;#o; ;i;i;i; i;#; 0; 0i<#o; ;i;i;i; i<#; 0; 0i=#o; ;i;i;i; i=#; 0; 0i>#o; ;i;i;i; i>#; 0; 0i?#o; ;i;i;i; i?#; 0; 0i@#o; ;i;i;i; i@#; 0; 0iA#o; ;i;i;i; iA#; 0; 0iB#o; ;i;i;i; iB#; 0; 0iC#o; ;i;i;i; iC#; 0; 0iD#o; ;i;i;i; iD#; 0; 0iE#o; ;i;i;i; iE#; 0; 0iF#o; ;i;i;i; iF#; 0; 0iG#o; ;i;i;i; iG#; 0; 0iH#o; ;i;i;i; iH#; 0; 0iI#o; ;i;i;i; iI#; 0; 0iJ#o; ;i;i;i; iJ#; 0; 0iK#o; ;i;i;i; iK#; 0; 0iL#o; ;i;i;i; iL#; 0; 0iM#o; ;i;i;i; iM#; 0; 0iN#o; ;i;i;i; iN#; 0; 0iO#o; ;i;i;i; iO#; 0; 0iP#o; ;i;i;i; iP#; 0; 0iQ#o; ;i;i;i; iQ#; 0; 0iR#o; ;i;i;i; iR#; 0; 0iS#o; ;i;i;i; iS#; 0; 0iT#o; ;i;i;i; iT#; 0; 0iU#o; ;i;i;i; iU#; 0; 0iV#o; ;i;i;i; iV#; 0; 0iW#o; ;i;i;i; iW#; 0; 0iX#o; ;i;i;i; iX#; 0; 0iY#o; ;i;i;i; iY#; 0; 0iZ#o; ;i;i;i; iZ#; 0; 0i[#o; ;i;i;i; i[#; 0; 0i\#o; ;i;i;i; i\#; 0; 0i]#o; ;i;i;i; i]#; 0; 0i^#o; ;i;i;i; i^#; 0; 0i_#o; ;i;i;i; i_#; 0; 0i`#o; ;i;i;i; i`#; 0; 0ia#o; ;i;i;i; ia#; 0; 0ib#o; ;i;i;i; ib#; 0; 0ic#o; ;i;i;i; ic#; 0; 0id#o; ;i;i;i; id#; 0; 0ie#o; ;i;i;i; ie#; 0; 0if#o; ;i;i;i; if#; 0; 0ig#o; ;i;i;i; ig#; 0; 0ih#o; ;i;i;i; ih#; 0; 0ii#o; ;i;i;i; ii#; 0; 0ij#o; ;i;i;i; ij#; 0; 0ik#o; ;i;i;i; ik#; 0; 0il#o; ;i;i;i; il#; 0; 0im#o; ;i;i;i; im#; 0; 0in#o; ;i;i;i; in#; 0; 0io#o; ;i;i;i; io#; 0; 0ip#o; ;i;i;i; ip#; 0; 0iq#o; ;i;i;i; iq#; 0; 0ir#o; ;i;i;i; ir#; 0; 0is#o; ;i;i;i; is#; 0; 0it#o; ;i;i;i; it#; 0; 0iu#o; ;i;i;i; iu#; 0; 0iv#o; ;i;i;i; iv#; 0; 0iw#o; ;i;i;i; iw#; 0; 0ix#o; ;i;i;i; ix#; 0; 0iy#o; ;i;i;i; iy#; 0; 0iz#o; ;i;i;i; iz#; 0; 0i{#o; ;i;i;i; i{#; 0; 0i|#o; ;i;i;i; i|#; 0; 0i}#o; ;i;i;i; i}#; 0; 0i~#o; ;i;i;i; i~#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i $o; ;i;i;i; i $; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i$o; ;i;i;i; i$; 0; 0i $o; ;i;i;i; i $; 0; 0i!$o; ;i;i;i; i!$; 0; 0i"$o; ;i;i;i; i"$; 0; 0i#$o; ;i;i;i; i#$; 0; 0i$$o; ;i;i;i; i$$; 0; 0i%$o; ;i;i;i; i%$; 0; 0i&$o; ;i;i;i; i&$; 0; 0i'$o; ;i;i;i; i'$; 0; 0i($o; ;i;i;i; i($; 0; 0i)$o; ;i;i;i; i)$; 0; 0i*$o; ;i;i;i; i*$; 0; 0i+$o; ;i;i;i; i+$; 0; 0i,$o; ;i;i;i; i,$; 0; 0i-$o; ;i;i;i; i-$; 0; 0i.$o; ;i;i;i; i.$; 0; 0i/$o; ;i;i;i; i/$; 0; 0i0$o; ;i;i;i; i0$; 0; 0i1$o; ;i;i;i; i1$; 0; 0i2$o; ;i;i;i; i2$; 0; 0i3$o; ;i;i;i; i3$; 0; 0i4$o; ;i;i;i; i4$; 0; 0i5$o; ;i;i;i; i5$; 0; 0i6$o; ;i;i;i; i6$; 0; 0i7$o; ;i;i;i; i7$; 0; 0i8$o; ;i;i;i; i8$; 0; 0i9$o; ;i;i;i; i9$; 0; 0i:$o; ;i;i;i; i:$; 0; 0i;$o; ;i;i;i; i;$; 0; 0i<$o; ;i;i;i; i<$; 0; 0i=$o; ;i;i;i; i=$; 0; 0i>$o; ;i;i;i; i>$; 0; 0i?$o; ;i;i;i; i?$; 0; 0i@$o; ;i;i;i; i@$; 0; 0iA$o; ;i;i;i; iA$; 0; 0iB$o; ;i;i;i; iB$; 0; 0iC$o; ;i;i;i; iC$; 0; 0iD$o; ;i;i;i; iD$; 0; 0iE$o; ;i;i;i; iE$; 0; 0iF$o; ;i;i;i; iF$; 0; 0iG$o; ;i;i;i; iG$; 0; 0iH$o; ;i;i;i; iH$; 0; 0iI$o; ;i;i;i; iI$; 0; 0iJ$o; ;i;i;i; iJ$; 0; 0iK$o; ;i;i;i; iK$; 0; 0iL$o; ;i;i;i; iL$; 0; 0iM$o; ;i;i;i; iM$; 0; 0iN$o; ;i;i;i; iN$; 0; 0iO$o; ;i;i;i; iO$; 0; 0iP$o; ;i;i;i; iP$; 0; 0iQ$o; ;i;i;i; iQ$; 0; 0iR$o; ;i;i;i; iR$; 0; 0iS$o; ;i;i;i; iS$; 0; 0iT$o; ;i;i;i; iT$; 0; 0iU$o; ;i;i;i; iU$; 0; 0iV$o; ;i;i;i; iV$; 0; 0iW$o; ;i;i;i; iW$; 0; 0iX$o; ;i;i;i; iX$; 0; 0iY$o; ;i;i;i; iY$; 0; 0iZ$o; ;i;i;i; iZ$; 0; 0i[$o; ;i;i;i; i[$; 0; 0i\$o; ;i;i;i; i\$; 0; 0i]$o; ;i;i;i; i]$; 0; 0i^$o; ;i;i;i; i^$; 0; 0i_$o; ;i;i;i; i_$; 0; 0i`$o; ;i;i;i; i`$; 0; 0ia$o; ;i;i;i; ia$; 0; 0ib$o; ;i;i;i; ib$; 0; 0ic$o; ;i;i;i; ic$; 0; 0id$o; ;i;i;i; id$; 0; 0ie$o; ;i;i;i; ie$; 0; 0if$o; ;i;i;i; if$; 0; 0ig$o; ;i;i;i; ig$; 0; 0ih$o; ;i;i;i; ih$; 0; 0ii$o; ;i;i;i; ii$; 0; 0ij$o; ;i;i;i; ij$; 0; 0ik$o; ;i;i;i; ik$; 0; 0il$o; ;i;i;i; il$; 0; 0im$o; ;i;i;i; im$; 0; 0in$o; ;i;i;i; in$; 0; 0ip$o; ;i;i;i; ip$; 0; 0iq$o; ;i;i;i; iq$; 0; 0ir$o; ;i;i;i; ir$; 0; 0is$o; ;i;i;i; is$; 0; 0it$o; ;i;i;i; it$; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i 0o; ;i;i;i; i 0; 0; 0i!0o; ;i;i;i; i!0; 0; 0i"0o; ;i;i;i; i"0; 0; 0i#0o; ;i;i;i; i#0; 0; 0i$0o; ;i;i;i; i$0; 0; 0i%0o; ;i;i;i; i%0; 0; 0i&0o; ;i;i;i; i&0; 0; 0i'0o; ;i;i;i; i'0; 0; 0i(0o; ;i;i;i; i(0; 0; 0i)0o; ;i;i;i; i)0; 0; 0i*0o; ;i;i;i; i*0; 0; 0i+0o; ;i;i;i; i+0; 0; 0i,0o; ;i;i;i; i,0; 0; 0i-0o; ;i;i;i; i-0; 0; 0i.0o; ;i;i;i; i.0; 0; 0i/0o; ;i;i;i; i/0; 0; 0i00o; ;i;i;i; i00; 0; 0i10o; ;i;i;i; i10; 0; 0i20o; ;i;i;i; i20; 0; 0i30o; ;i;i;i; i30; 0; 0i40o; ;i;i;i; i40; 0; 0i50o; ;i;i;i; i50; 0; 0i60o; ;i;i;i; i60; 0; 0i70o; ;i;i;i; i70; 0; 0i80o; ;i;i;i; i80; 0; 0i90o; ;i;i;i; i90; 0; 0i:0o; ;i;i;i; i:0; 0; 0i;0o; ;i;i;i; i;0; 0; 0i<0o; ;i;i;i; i<0; 0; 0i=0o; ;i;i;i; i=0; 0; 0i>0o; ;i;i;i; i>0; 0; 0i?0o; ;i;i;i; i?0; 0; 0i@0o; ;i;i;i; i@0; 0; 0iA0o; ;i;i;i; iA0; 0; 0iB0o; ;i;i;i; iB0; 0; 0iC0o; ;i;i;i; iC0; 0; 0iD0o; ;i;i;i; iD0; 0; 0iE0o; ;i;i;i; iE0; 0; 0iF0o; ;i;i;i; iF0; 0; 0iG0o; ;i;i;i; iG0; 0; 0iH0o; ;i;i;i; iH0; 0; 0iI0o; ;i;i;i; iI0; 0; 0iJ0o; ;i;i;i; iJ0; 0; 0iK0o; ;i;i;i; iK0; 0; 0iL0o; ;i;i;i; iL0; 0; 0iM0o; ;i;i;i; iM0; 0; 0iN0o; ;i;i;i; iN0; 0; 0iO0o; ;i;i;i; iO0; 0; 0iP0o; ;i;i;i; iP0; 0; 0iQ0o; ;i;i;i; iQ0; 0; 0iR0o; ;i;i;i; iR0; 0; 0iS0o; ;i;i;i; iS0; 0; 0iT0o; ;i;i;i; iT0; 0; 0iU0o; ;i;i;i; iU0; 0; 0iV0o; ;i;i;i; iV0; 0; 0iW0o; ;i;i;i; iW0; 0; 0iX0o; ;i;i;i; iX0; 0; 0iY0o; ;i;i;i; iY0; 0; 0iZ0o; ;i;i;i; iZ0; 0; 0i[0o; ;i;i;i; i[0; 0; 0i\0o; ;i;i;i; i\0; 0; 0i]0o; ;i;i;i; i]0; 0; 0i^0o; ;i;i;i; i^0; 0; 0i_0o; ;i;i;i; i_0; 0; 0i`0o; ;i;i;i; i`0; 0; 0ia0o; ;i;i;i; ia0; 0; 0ib0o; ;i;i;i; ib0; 0; 0ic0o; ;i;i;i; ic0; 0; 0id0o; ;i;i;i; id0; 0; 0ie0o; ;i;i;i; ie0; 0; 0if0o; ;i;i;i; if0; 0; 0ig0o; ;i;i;i; ig0; 0; 0ih0o; ;i;i;i; ih0; 0; 0ii0o; ;i;i;i; ii0; 0; 0ij0o; ;i;i;i; ij0; 0; 0ik0o; ;i;i;i; ik0; 0; 0il0o; ;i;i;i; il0; 0; 0im0o; ;i;i;i; im0; 0; 0in0o; ;i;i;i; in0; 0; 0io0o; ;i;i;i; io0; 0; 0ip0o; ;i;i;i; ip0; 0; 0iq0o; ;i;i;i; iq0; 0; 0ir0o; ;i;i;i; ir0; 0; 0is0o; ;i;i;i; is0; 0; 0it0o; ;i;i;i; it0; 0; 0iu0o; ;i;i;i; iu0; 0; 0iv0o; ;i;i;i; iv0; 0; 0iw0o; ;i;i;i; iw0; 0; 0ix0o; ;i;i;i; ix0; 0; 0iy0o; ;i;i;i; iy0; 0; 0iz0o; ;i;i;i; iz0; 0; 0i{0o; ;i;i;i; i{0; 0; 0i|0o; ;i;i;i; i|0; 0; 0i}0o; ;i;i;i; i}0; 0; 0i~0o; ;i;i;i; i~0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i 1o; ;i;i;i; i 1; 0; 0i!1o; ;i;i;i; i!1; 0; 0i"1o; ;i;i;i; i"1; 0; 0i#1o; ;i;i;i; i#1; 0; 0i$1o; ;i;i;i; i$1; 0; 0i%1o; ;i;i;i; i%1; 0; 0i&1o; ;i;i;i; i&1; 0; 0i'1o; ;i;i;i; i'1; 0; 0i(1o; ;i;i;i; i(1; 0; 0i)1o; ;i;i;i; i)1; 0; 0i*1o; ;i;i;i; i*1; 0; 0i+1o; ;i;i;i; i+1; 0; 0i,1o; ;i;i;i; i,1; 0; 0i-1o; ;i;i;i; i-1; 0; 0i.1o; ;i;i;i; i.1; 0; 0i/1o; ;i;i;i; i/1; 0; 0i01o; ;i;i;i; i01; 0; 0i11o; ;i;i;i; i11; 0; 0i21o; ;i;i;i; i21; 0; 0i31o; ;i;i;i; i31; 0; 0i41o; ;i;i;i; i41; 0; 0i51o; ;i;i;i; i51; 0; 0i61o; ;i;i;i; i61; 0; 0i71o; ;i;i;i; i71; 0; 0i81o; ;i;i;i; i81; 0; 0i91o; ;i;i;i; i91; 0; 0i:1o; ;i;i;i; i:1; 0; 0i;1o; ;i;i;i; i;1; 0; 0i<1o; ;i;i;i; i<1; 0; 0i=1o; ;i;i;i; i=1; 0; 0i>1o; ;i;i;i; i>1; 0; 0i?1o; ;i;i;i; i?1; 0; 0i@1o; ;i;i;i; i@1; 0; 0iA1o; ;i;i;i; iA1; 0; 0iB1o; ;i;i;i; iB1; 0; 0iC1o; ;i;i;i; iC1; 0; 0iD1o; ;i;i;i; iD1; 0; 0iE1o; ;i;i;i; iE1; 0; 0iF1o; ;i;i;i; iF1; 0; 0iG1o; ;i;i;i; iG1; 0; 0iH1o; ;i;i;i; iH1; 0; 0iI1o; ;i;i;i; iI1; 0; 0iJ1o; ;i;i;i; iJ1; 0; 0iK1o; ;i;i;i; iK1; 0; 0iL1o; ;i;i;i; iL1; 0; 0iM1o; ;i;i;i; iM1; 0; 0iN1o; ;i;i;i; iN1; 0; 0iO1o; ;i;i;i; iO1; 0; 0iP1o; ;i;i;i; iP1; 0; 0iQ1o; ;i;i;i; iQ1; 0; 0iR1o; ;i;i;i; iR1; 0; 0iS1o; ;i;i;i; iS1; 0; 0iT1o; ;i;i;i; iT1; 0; 0iU1o; ;i;i;i; iU1; 0; 0iV1o; ;i;i;i; iV1; 0; 0iW1o; ;i;i;i; iW1; 0; 0iX1o; ;i;i;i; iX1; 0; 0iY1o; ;i;i;i; iY1; 0; 0iZ1o; ;i;i;i; iZ1; 0; 0i[1o; ;i;i;i; i[1; 0; 0i\1o; ;i;i;i; i\1; 0; 0i]1o; ;i;i;i; i]1; 0; 0i^1o; ;i;i;i; i^1; 0; 0i_1o; ;i;i;i; i_1; 0; 0i`1o; ;i;i;i; i`1; 0; 0ia1o; ;i;i;i; ia1; 0; 0ib1o; ;i;i;i; ib1; 0; 0ic1o; ;i;i;i; ic1; 0; 0id1o; ;i;i;i; id1; 0; 0ie1o; ;i;i;i; ie1; 0; 0if1o; ;i;i;i; if1; 0; 0ig1o; ;i;i;i; ig1; 0; 0ih1o; ;i;i;i; ih1; 0; 0ii1o; ;i;i;i; ii1; 0; 0ij1o; ;i;i;i; ij1; 0; 0ik1o; ;i;i;i; ik1; 0; 0il1o; ;i;i;i; il1; 0; 0im1o; ;i;i;i; im1; 0; 0in1o; ;i;i;i; in1; 0; 0io1o; ;i;i;i; io1; 0; 0ip1o; ;i;i;i; ip1; 0; 0iq1o; ;i;i;i; iq1; 0; 0ir1o; ;i;i;i; ir1; 0; 0is1o; ;i;i;i; is1; 0; 0it1o; ;i;i;i; it1; 0; 0iu1o; ;i;i;i; iu1; 0; 0iv1o; ;i;i;i; iv1; 0; 0iw1o; ;i;i;i; iw1; 0; 0ix1o; ;i;i;i; ix1; 0; 0iy1o; ;i;i;i; iy1; 0; 0iz1o; ;i;i;i; iz1; 0; 0i{1o; ;i;i;i; i{1; 0; 0i|1o; ;i;i;i; i|1; 0; 0i}1o; ;i;i;i; i}1; 0; 0i~1o; ;i;i;i; i~1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i 2o; ;i;i;i; i 2; 0; 0i!2o; ;i;i;i; i!2; 0; 0i"2o; ;i;i;i; i"2; 0; 0i#2o; ;i;i;i; i#2; 0; 0i$2o; ;i;i;i; i$2; 0; 0i%2o; ;i;i;i; i%2; 0; 0i&2o; ;i;i;i; i&2; 0; 0i'2o; ;i;i;i; i'2; 0; 0i(2o; ;i;i;i; i(2; 0; 0i)2o; ;i;i;i; i)2; 0; 0i*2o; ;i;i;i; i*2; 0; 0i+2o; ;i;i;i; i+2; 0; 0i,2o; ;i;i;i; i,2; 0; 0i-2o; ;i;i;i; i-2; 0; 0i.2o; ;i;i;i; i.2; 0; 0i/2o; ;i;i;i; i/2; 0; 0i02o; ;i;i;i; i02; 0; 0i12o; ;i;i;i; i12; 0; 0i22o; ;i;i;i; i22; 0; 0i32o; ;i;i;i; i32; 0; 0i42o; ;i;i;i; i42; 0; 0i52o; ;i;i;i; i52; 0; 0i62o; ;i;i;i; i62; 0; 0i72o; ;i;i;i; i72; 0; 0i82o; ;i;i;i; i82; 0; 0i92o; ;i;i;i; i92; 0; 0i:2o; ;i;i;i; i:2; 0; 0i;2o; ;i;i;i; i;2; 0; 0i<2o; ;i;i;i; i<2; 0; 0i=2o; ;i;i;i; i=2; 0; 0i>2o; ;i;i;i; i>2; 0; 0i?2o; ;i;i;i; i?2; 0; 0i@2o; ;i;i;i; i@2; 0; 0iA2o; ;i;i;i; iA2; 0; 0iB2o; ;i;i;i; iB2; 0; 0iC2o; ;i;i;i; iC2; 0; 0iD2o; ;i;i;i; iD2; 0; 0iE2o; ;i;i;i; iE2; 0; 0iF2o; ;i;i;i; iF2; 0; 0iG2o; ;i;i;i; iG2; 0; 0iH2o; ;i;i;i; iH2; 0; 0iI2o; ;i;i;i; iI2; 0; 0iJ2o; ;i;i;i; iJ2; 0; 0iK2o; ;i;i;i; iK2; 0; 0iL2o; ;i;i;i; iL2; 0; 0iM2o; ;i;i;i; iM2; 0; 0iN2o; ;i;i;i; iN2; 0; 0iO2o; ;i;i;i; iO2; 0; 0iP2o; ;i;i;i; iP2; 0; 0iQ2o; ;i;i;i; iQ2; 0; 0iR2o; ;i;i;i; iR2; 0; 0iS2o; ;i;i;i; iS2; 0; 0iT2o; ;i;i;i; iT2; 0; 0iU2o; ;i;i;i; iU2; 0; 0iV2o; ;i;i;i; iV2; 0; 0iW2o; ;i;i;i; iW2; 0; 0iX2o; ;i;i;i; iX2; 0; 0iY2o; ;i;i;i; iY2; 0; 0iZ2o; ;i;i;i; iZ2; 0; 0i[2o; ;i;i;i; i[2; 0; 0i\2o; ;i;i;i; i\2; 0; 0i]2o; ;i;i;i; i]2; 0; 0i^2o; ;i;i;i; i^2; 0; 0i_2o; ;i;i;i; i_2; 0; 0i`2o; ;i;i;i; i`2; 0; 0ia2o; ;i;i;i; ia2; 0; 0ib2o; ;i;i;i; ib2; 0; 0ic2o; ;i;i;i; ic2; 0; 0id2o; ;i;i;i; id2; 0; 0ie2o; ;i;i;i; ie2; 0; 0if2o; ;i;i;i; if2; 0; 0ig2o; ;i;i;i; ig2; 0; 0ih2o; ;i;i;i; ih2; 0; 0ii2o; ;i;i;i; ii2; 0; 0ij2o; ;i;i;i; ij2; 0; 0ik2o; ;i;i;i; ik2; 0; 0il2o; ;i;i;i; il2; 0; 0im2o; ;i;i;i; im2; 0; 0in2o; ;i;i;i; in2; 0; 0io2o; ;i;i;i; io2; 0; 0ip2o; ;i;i;i; ip2; 0; 0iq2o; ;i;i;i; iq2; 0; 0ir2o; ;i;i;i; ir2; 0; 0is2o; ;i;i;i; is2; 0; 0it2o; ;i;i;i; it2; 0; 0iu2o; ;i;i;i; iu2; 0; 0iv2o; ;i;i;i; iv2; 0; 0iw2o; ;i;i;i; iw2; 0; 0ix2o; ;i;i;i; ix2; 0; 0iy2o; ;i;i;i; iy2; 0; 0iz2o; ;i;i;i; iz2; 0; 0i{2o; ;i;i;i; i{2; 0; 0i|2o; ;i;i;i; i|2; 0; 0i}2o; ;i;i;i; i}2; 0; 0i~2o; ;i;i;i; i~2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i 3o; ;i;i;i; i 3; 0; 0i!3o; ;i;i;i; i!3; 0; 0i"3o; ;i;i;i; i"3; 0; 0i#3o; ;i;i;i; i#3; 0; 0i$3o; ;i;i;i; i$3; 0; 0i%3o; ;i;i;i; i%3; 0; 0i&3o; ;i;i;i; i&3; 0; 0i'3o; ;i;i;i; i'3; 0; 0i(3o; ;i;i;i; i(3; 0; 0i)3o; ;i;i;i; i)3; 0; 0i*3o; ;i;i;i; i*3; 0; 0i+3o; ;i;i;i; i+3; 0; 0i,3o; ;i;i;i; i,3; 0; 0i-3o; ;i;i;i; i-3; 0; 0i.3o; ;i;i;i; i.3; 0; 0i/3o; ;i;i;i; i/3; 0; 0i03o; ;i;i;i; i03; 0; 0i13o; ;i;i;i; i13; 0; 0i23o; ;i;i;i; i23; 0; 0i33o; ;i;i;i; i33; 0; 0i43o; ;i;i;i; i43; 0; 0i53o; ;i;i;i; i53; 0; 0i63o; ;i;i;i; i63; 0; 0i73o; ;i;i;i; i73; 0; 0i83o; ;i;i;i; i83; 0; 0i93o; ;i;i;i; i93; 0; 0i:3o; ;i;i;i; i:3; 0; 0i;3o; ;i;i;i; i;3; 0; 0i<3o; ;i;i;i; i<3; 0; 0i=3o; ;i;i;i; i=3; 0; 0i>3o; ;i;i;i; i>3; 0; 0i?3o; ;i;i;i; i?3; 0; 0i@3o; ;i;i;i; i@3; 0; 0iA3o; ;i;i;i; iA3; 0; 0iB3o; ;i;i;i; iB3; 0; 0iC3o; ;i;i;i; iC3; 0; 0iD3o; ;i;i;i; iD3; 0; 0iE3o; ;i;i;i; iE3; 0; 0iF3o; ;i;i;i; iF3; 0; 0iG3o; ;i;i;i; iG3; 0; 0iH3o; ;i;i;i; iH3; 0; 0iI3o; ;i;i;i; iI3; 0; 0iJ3o; ;i;i;i; iJ3; 0; 0iK3o; ;i;i;i; iK3; 0; 0iL3o; ;i;i;i; iL3; 0; 0iM3o; ;i;i;i; iM3; 0; 0iN3o; ;i;i;i; iN3; 0; 0iO3o; ;i;i;i; iO3; 0; 0iP3o; ;i;i;i; iP3; 0; 0iQ3o; ;i;i;i; iQ3; 0; 0iR3o; ;i;i;i; iR3; 0; 0iS3o; ;i;i;i; iS3; 0; 0iT3o; ;i;i;i; iT3; 0; 0iU3o; ;i;i;i; iU3; 0; 0iV3o; ;i;i;i; iV3; 0; 0iW3o; ;i;i;i; iW3; 0; 0iX3o; ;i;i;i; iX3; 0; 0iY3o; ;i;i;i; iY3; 0; 0iZ3o; ;i;i;i; iZ3; 0; 0i[3o; ;i;i;i; i[3; 0; 0i\3o; ;i;i;i; i\3; 0; 0i]3o; ;i;i;i; i]3; 0; 0i^3o; ;i;i;i; i^3; 0; 0i_3o; ;i;i;i; i_3; 0; 0i`3o; ;i;i;i; i`3; 0; 0ia3o; ;i;i;i; ia3; 0; 0ib3o; ;i;i;i; ib3; 0; 0ic3o; ;i;i;i; ic3; 0; 0id3o; ;i;i;i; id3; 0; 0ie3o; ;i;i;i; ie3; 0; 0if3o; ;i;i;i; if3; 0; 0ig3o; ;i;i;i; ig3; 0; 0ih3o; ;i;i;i; ih3; 0; 0ii3o; ;i;i;i; ii3; 0; 0ij3o; ;i;i;i; ij3; 0; 0ik3o; ;i;i;i; ik3; 0; 0il3o; ;i;i;i; il3; 0; 0im3o; ;i;i;i; im3; 0; 0in3o; ;i;i;i; in3; 0; 0io3o; ;i;i;i; io3; 0; 0ip3o; ;i;i;i; ip3; 0; 0iq3o; ;i;i;i; iq3; 0; 0ir3o; ;i;i;i; ir3; 0; 0is3o; ;i;i;i; is3; 0; 0it3o; ;i;i;i; it3; 0; 0iu3o; ;i;i;i; iu3; 0; 0iv3o; ;i;i;i; iv3; 0; 0iw3o; ;i;i;i; iw3; 0; 0ix3o; ;i;i;i; ix3; 0; 0iy3o; ;i;i;i; iy3; 0; 0iz3o; ;i;i;i; iz3; 0; 0i{3o; ;i;i;i; i{3; 0; 0i|3o; ;i;i;i; i|3; 0; 0i}3o; ;i;i;i; i}3; 0; 0i~3o; ;i;i;i; i~3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i4o; ;i;i;i; i4; 0; 0i 4o; ;i;i;i; i 4; 0; 0i!4o; ;i;i;i; i!4; 0; 0i"4o; ;i;i;i; i"4; 0; 0i#4o; ;i;i;i; i#4; 0; 0i$4o; ;i;i;i; i$4; 0; 0i%4o; ;i;i;i; i%4; 0; 0i&4o; ;i;i;i; i&4; 0; 0i'4o; ;i;i;i; i'4; 0; 0i(4o; ;i;i;i; i(4; 0; 0i)4o; ;i;i;i; i)4; 0; 0i*4o; ;i;i;i; i*4; 0; 0i+4o; ;i;i;i; i+4; 0; 0i,4o; ;i;i;i; i,4; 0; 0i-4o; ;i;i;i; i-4; 0; 0i.4o; ;i;i;i; i.4; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0i ho; ;i;i;i; i h; 0; 0i ho; ;i;i;i; i h; 0; 0i ho; ;i;i;i; i h; 0; 0i ho; ;i;i;i; i h; 0; 0i ho; ;i;i;i; i h; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0i ho; ;i;i;i; i h; 0; 0i!ho; ;i;i;i; i!h; 0; 0i"ho; ;i;i;i; i"h; 0; 0i#ho; ;i;i;i; i#h; 0; 0i$ho; ;i;i;i; i$h; 0; 0i%ho; ;i;i;i; i%h; 0; 0i&ho; ;i;i;i; i&h; 0; 0i'ho; ;i;i;i; i'h; 0; 0i(ho; ;i;i;i; i(h; 0; 0i)ho; ;i;i;i; i)h; 0; 0i*ho; ;i;i;i; i*h; 0; 0i+ho; ;i;i;i; i+h; 0; 0i,ho; ;i;i;i; i,h; 0; 0i-ho; ;i;i;i; i-h; 0; 0i.ho; ;i;i;i; i.h; 0; 0i/ho; ;i;i;i; i/h; 0; 0i0ho; ;i;i;i; i0h; 0; 0i1ho; ;i;i;i; i1h; 0; 0i2ho; ;i;i;i; i2h; 0; 0i3ho; ;i;i;i; i3h; 0; 0i4ho; ;i;i;i; i4h; 0; 0i5ho; ;i;i;i; i5h; 0; 0i6ho; ;i;i;i; i6h; 0; 0i7ho; ;i;i;i; i7h; 0; 0i8ho; ;i;i;i; i8h; 0; 0i9ho; ;i;i;i; i9h; 0; 0i:ho; ;i;i;i; i:h; 0; 0i;ho; ;i;i;i; i;h; 0; 0iho; ;i;i;i; i>h; 0; 0i?ho; ;i;i;i; i?h; 0; 0i@ho; ;i;i;i; i@h; 0; 0iAho; ;i;i;i; iAh; 0; 0iBho; ;i;i;i; iBh; 0; 0iCho; ;i;i;i; iCh; 0; 0iDho; ;i;i;i; iDh; 0; 0iEho; ;i;i;i; iEh; 0; 0iFho; ;i;i;i; iFh; 0; 0iGho; ;i;i;i; iGh; 0; 0iHho; ;i;i;i; iHh; 0; 0iIho; ;i;i;i; iIh; 0; 0iJho; ;i;i;i; iJh; 0; 0iKho; ;i;i;i; iKh; 0; 0iLho; ;i;i;i; iLh; 0; 0iMho; ;i;i;i; iMh; 0; 0iNho; ;i;i;i; iNh; 0; 0iOho; ;i;i;i; iOh; 0; 0iPho; ;i;i;i; iPh; 0; 0iQho; ;i;i;i; iQh; 0; 0iRho; ;i;i;i; iRh; 0; 0iSho; ;i;i;i; iSh; 0; 0iTho; ;i;i;i; iTh; 0; 0iUho; ;i;i;i; iUh; 0; 0iVho; ;i;i;i; iVh; 0; 0iWho; ;i;i;i; iWh; 0; 0iXho; ;i;i;i; iXh; 0; 0iYho; ;i;i;i; iYh; 0; 0iZho; ;i;i;i; iZh; 0; 0i[ho; ;i;i;i; i[h; 0; 0i\ho; ;i;i;i; i\h; 0; 0i]ho; ;i;i;i; i]h; 0; 0i^ho; ;i;i;i; i^h; 0; 0i_ho; ;i;i;i; i_h; 0; 0i`ho; ;i;i;i; i`h; 0; 0iaho; ;i;i;i; iah; 0; 0ibho; ;i;i;i; ibh; 0; 0icho; ;i;i;i; ich; 0; 0idho; ;i;i;i; idh; 0; 0ieho; ;i;i;i; ieh; 0; 0ifho; ;i;i;i; ifh; 0; 0igho; ;i;i;i; igh; 0; 0ihho; ;i;i;i; ihh; 0; 0iiho; ;i;i;i; iih; 0; 0ijho; ;i;i;i; ijh; 0; 0ikho; ;i;i;i; ikh; 0; 0ilho; ;i;i;i; ilh; 0; 0imho; ;i;i;i; imh; 0; 0inho; ;i;i;i; inh; 0; 0ioho; ;i;i;i; ioh; 0; 0ipho; ;i;i;i; iph; 0; 0iqho; ;i;i;i; iqh; 0; 0irho; ;i;i;i; irh; 0; 0isho; ;i;i;i; ish; 0; 0itho; ;i;i;i; ith; 0; 0iuho; ;i;i;i; iuh; 0; 0ivho; ;i;i;i; ivh; 0; 0iwho; ;i;i;i; iwh; 0; 0ixho; ;i;i;i; ixh; 0; 0iyho; ;i;i;i; iyh; 0; 0izho; ;i;i;i; izh; 0; 0i{ho; ;i;i;i; i{h; 0; 0i|ho; ;i;i;i; i|h; 0; 0i}ho; ;i;i;i; i}h; 0; 0i~ho; ;i;i;i; i~h; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0i io; ;i;i;i; i i; 0; 0i io; ;i;i;i; i i; 0; 0i io; ;i;i;i; i i; 0; 0i io; ;i;i;i; i i; 0; 0i io; ;i;i;i; i i; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0i io; ;i;i;i; i i; 0; 0i!io; ;i;i;i; i!i; 0; 0i"io; ;i;i;i; i"i; 0; 0i#io; ;i;i;i; i#i; 0; 0i$io; ;i;i;i; i$i; 0; 0i%io; ;i;i;i; i%i; 0; 0i&io; ;i;i;i; i&i; 0; 0i'io; ;i;i;i; i'i; 0; 0i(io; ;i;i;i; i(i; 0; 0i)io; ;i;i;i; i)i; 0; 0i*io; ;i;i;i; i*i; 0; 0i+io; ;i;i;i; i+i; 0; 0i,io; ;i;i;i; i,i; 0; 0i-io; ;i;i;i; i-i; 0; 0i.io; ;i;i;i; i.i; 0; 0i/io; ;i;i;i; i/i; 0; 0i0io; ;i;i;i; i0i; 0; 0i1io; ;i;i;i; i1i; 0; 0i2io; ;i;i;i; i2i; 0; 0i3io; ;i;i;i; i3i; 0; 0i4io; ;i;i;i; i4i; 0; 0i5io; ;i;i;i; i5i; 0; 0i6io; ;i;i;i; i6i; 0; 0i7io; ;i;i;i; i7i; 0; 0i8io; ;i;i;i; i8i; 0; 0i9io; ;i;i;i; i9i; 0; 0i:io; ;i;i;i; i:i; 0; 0i;io; ;i;i;i; i;i; 0; 0iio; ;i;i;i; i>i; 0; 0i?io; ;i;i;i; i?i; 0; 0i@io; ;i;i;i; i@i; 0; 0iAio; ;i;i;i; iAi; 0; 0iBio; ;i;i;i; iBi; 0; 0iCio; ;i;i;i; iCi; 0; 0iDio; ;i;i;i; iDi; 0; 0iEio; ;i;i;i; iEi; 0; 0iFio; ;i;i;i; iFi; 0; 0iGio; ;i;i;i; iGi; 0; 0iHio; ;i;i;i; iHi; 0; 0iIio; ;i;i;i; iIi; 0; 0iJio; ;i;i;i; iJi; 0; 0iKio; ;i;i;i; iKi; 0; 0iLio; ;i;i;i; iLi; 0; 0iMio; ;i;i;i; iMi; 0; 0iNio; ;i;i;i; iNi; 0; 0iOio; ;i;i;i; iOi; 0; 0iPio; ;i;i;i; iPi; 0; 0iQio; ;i;i;i; iQi; 0; 0iRio; ;i;i;i; iRi; 0; 0iSio; ;i;i;i; iSi; 0; 0iTio; ;i;i;i; iTi; 0; 0iUio; ;i;i;i; iUi; 0; 0iVio; ;i;i;i; iVi; 0; 0iWio; ;i;i;i; iWi; 0; 0iXio; ;i;i;i; iXi; 0; 0iYio; ;i;i;i; iYi; 0; 0iZio; ;i;i;i; iZi; 0; 0i[io; ;i;i;i; i[i; 0; 0i\io; ;i;i;i; i\i; 0; 0i]io; ;i;i;i; i]i; 0; 0i^io; ;i;i;i; i^i; 0; 0i_io; ;i;i;i; i_i; 0; 0i`io; ;i;i;i; i`i; 0; 0iaio; ;i;i;i; iai; 0; 0ibio; ;i;i;i; ibi; 0; 0icio; ;i;i;i; ici; 0; 0idio; ;i;i;i; idi; 0; 0ieio; ;i;i;i; iei; 0; 0ifio; ;i;i;i; ifi; 0; 0igio; ;i;i;i; igi; 0; 0ihio; ;i;i;i; ihi; 0; 0iiio; ;i;i;i; iii; 0; 0ijio; ;i;i;i; iji; 0; 0ikio; ;i;i;i; iki; 0; 0ilio; ;i;i;i; ili; 0; 0imio; ;i;i;i; imi; 0; 0inio; ;i;i;i; ini; 0; 0ioio; ;i;i;i; ioi; 0; 0ipio; ;i;i;i; ipi; 0; 0iqio; ;i;i;i; iqi; 0; 0irio; ;i;i;i; iri; 0; 0isio; ;i;i;i; isi; 0; 0itio; ;i;i;i; iti; 0; 0iuio; ;i;i;i; iui; 0; 0ivio; ;i;i;i; ivi; 0; 0iwio; ;i;i;i; iwi; 0; 0ixio; ;i;i;i; ixi; 0; 0iyio; ;i;i;i; iyi; 0; 0izio; ;i;i;i; izi; 0; 0i{io; ;i;i;i; i{i; 0; 0i|io; ;i;i;i; i|i; 0; 0i}io; ;i;i;i; i}i; 0; 0i~io; ;i;i;i; i~i; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0i jo; ;i;i;i; i j; 0; 0i jo; ;i;i;i; i j; 0; 0i jo; ;i;i;i; i j; 0; 0i jo; ;i;i;i; i j; 0; 0i jo; ;i;i;i; i j; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0i jo; ;i;i;i; i j; 0; 0i!jo; ;i;i;i; i!j; 0; 0i"jo; ;i;i;i; i"j; 0; 0i#jo; ;i;i;i; i#j; 0; 0i$jo; ;i;i;i; i$j; 0; 0i%jo; ;i;i;i; i%j; 0; 0i&jo; ;i;i;i; i&j; 0; 0i'jo; ;i;i;i; i'j; 0; 0i(jo; ;i;i;i; i(j; 0; 0i)jo; ;i;i;i; i)j; 0; 0i*jo; ;i;i;i; i*j; 0; 0i+jo; ;i;i;i; i+j; 0; 0i,jo; ;i;i;i; i,j; 0; 0i-jo; ;i;i;i; i-j; 0; 0i.jo; ;i;i;i; i.j; 0; 0i/jo; ;i;i;i; i/j; 0; 0i0jo; ;i;i;i; i0j; 0; 0i1jo; ;i;i;i; i1j; 0; 0i2jo; ;i;i;i; i2j; 0; 0i3jo; ;i;i;i; i3j; 0; 0i4jo; ;i;i;i; i4j; 0; 0i5jo; ;i;i;i; i5j; 0; 0i6jo; ;i;i;i; i6j; 0; 0i7jo; ;i;i;i; i7j; 0; 0i8jo; ;i;i;i; i8j; 0; 0i@jo; ;i;i;i; i@j; 0; 0iAjo; ;i;i;i; iAj; 0; 0iBjo; ;i;i;i; iBj; 0; 0iCjo; ;i;i;i; iCj; 0; 0iDjo; ;i;i;i; iDj; 0; 0iEjo; ;i;i;i; iEj; 0; 0iFjo; ;i;i;i; iFj; 0; 0iGjo; ;i;i;i; iGj; 0; 0iHjo; ;i;i;i; iHj; 0; 0iIjo; ;i;i;i; iIj; 0; 0iJjo; ;i;i;i; iJj; 0; 0iKjo; ;i;i;i; iKj; 0; 0iLjo; ;i;i;i; iLj; 0; 0iMjo; ;i;i;i; iMj; 0; 0iNjo; ;i;i;i; iNj; 0; 0iOjo; ;i;i;i; iOj; 0; 0iPjo; ;i;i;i; iPj; 0; 0iQjo; ;i;i;i; iQj; 0; 0iRjo; ;i;i;i; iRj; 0; 0iSjo; ;i;i;i; iSj; 0; 0iTjo; ;i;i;i; iTj; 0; 0iUjo; ;i;i;i; iUj; 0; 0iVjo; ;i;i;i; iVj; 0; 0iWjo; ;i;i;i; iWj; 0; 0iXjo; ;i;i;i; iXj; 0; 0iYjo; ;i;i;i; iYj; 0; 0iZjo; ;i;i;i; iZj; 0; 0i[jo; ;i;i;i; i[j; 0; 0i\jo; ;i;i;i; i\j; 0; 0i]jo; ;i;i;i; i]j; 0; 0i^jo; ;i;i;i; i^j; 0; 0i`jo; ;i;i;i; i`j; 0; 0iajo; ;i;i;i; iaj; 0; 0ibjo; ;i;i;i; ibj; 0; 0icjo; ;i;i;i; icj; 0; 0idjo; ;i;i;i; idj; 0; 0iejo; ;i;i;i; iej; 0; 0ifjo; ;i;i;i; ifj; 0; 0igjo; ;i;i;i; igj; 0; 0ihjo; ;i;i;i; ihj; 0; 0iijo; ;i;i;i; iij; 0; 0injo; ;i;i;i; inj; 0; 0iojo; ;i;i;i; ioj; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0i ko; ;i;i;i; i k; 0; 0i ko; ;i;i;i; i k; 0; 0i ko; ;i;i;i; i k; 0; 0i ko; ;i;i;i; i k; 0; 0i ko; ;i;i;i; i k; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0i ko; ;i;i;i; i k; 0; 0i!ko; ;i;i;i; i!k; 0; 0i"ko; ;i;i;i; i"k; 0; 0i#ko; ;i;i;i; i#k; 0; 0i$ko; ;i;i;i; i$k; 0; 0i%ko; ;i;i;i; i%k; 0; 0i&ko; ;i;i;i; i&k; 0; 0i'ko; ;i;i;i; i'k; 0; 0i(ko; ;i;i;i; i(k; 0; 0i)ko; ;i;i;i; i)k; 0; 0i*ko; ;i;i;i; i*k; 0; 0i+ko; ;i;i;i; i+k; 0; 0i,ko; ;i;i;i; i,k; 0; 0i-ko; ;i;i;i; i-k; 0; 0i.ko; ;i;i;i; i.k; 0; 0i/ko; ;i;i;i; i/k; 0; 0i0ko; ;i;i;i; i0k; 0; 0i1ko; ;i;i;i; i1k; 0; 0i2ko; ;i;i;i; i2k; 0; 0i3ko; ;i;i;i; i3k; 0; 0i4ko; ;i;i;i; i4k; 0; 0i5ko; ;i;i;i; i5k; 0; 0i6ko; ;i;i;i; i6k; 0; 0i7ko; ;i;i;i; i7k; 0; 0i8ko; ;i;i;i; i8k; 0; 0i9ko; ;i;i;i; i9k; 0; 0i:ko; ;i;i;i; i:k; 0; 0i;ko; ;i;i;i; i;k; 0; 0iko; ;i;i;i; i>k; 0; 0i?ko; ;i;i;i; i?k; 0; 0i@ko; ;i;i;i; i@k; 0; 0iAko; ;i;i;i; iAk; 0; 0iBko; ;i;i;i; iBk; 0; 0iCko; ;i;i;i; iCk; 0; 0iDko; ;i;i;i; iDk; 0; 0iEko; ;i;i;i; iEk; 0; 0iPko; ;i;i;i; iPk; 0; 0iQko; ;i;i;i; iQk; 0; 0iRko; ;i;i;i; iRk; 0; 0iSko; ;i;i;i; iSk; 0; 0iTko; ;i;i;i; iTk; 0; 0iUko; ;i;i;i; iUk; 0; 0iVko; ;i;i;i; iVk; 0; 0iWko; ;i;i;i; iWk; 0; 0iXko; ;i;i;i; iXk; 0; 0iYko; ;i;i;i; iYk; 0; 0i[ko; ;i;i;i; i[k; 0; 0i\ko; ;i;i;i; i\k; 0; 0i]ko; ;i;i;i; i]k; 0; 0i^ko; ;i;i;i; i^k; 0; 0i_ko; ;i;i;i; i_k; 0; 0i`ko; ;i;i;i; i`k; 0; 0iako; ;i;i;i; iak; 0; 0icko; ;i;i;i; ick; 0; 0idko; ;i;i;i; idk; 0; 0ieko; ;i;i;i; iek; 0; 0ifko; ;i;i;i; ifk; 0; 0igko; ;i;i;i; igk; 0; 0ihko; ;i;i;i; ihk; 0; 0iiko; ;i;i;i; iik; 0; 0ijko; ;i;i;i; ijk; 0; 0ikko; ;i;i;i; ikk; 0; 0ilko; ;i;i;i; ilk; 0; 0imko; ;i;i;i; imk; 0; 0inko; ;i;i;i; ink; 0; 0ioko; ;i;i;i; iok; 0; 0ipko; ;i;i;i; ipk; 0; 0iqko; ;i;i;i; iqk; 0; 0irko; ;i;i;i; irk; 0; 0isko; ;i;i;i; isk; 0; 0itko; ;i;i;i; itk; 0; 0iuko; ;i;i;i; iuk; 0; 0ivko; ;i;i;i; ivk; 0; 0iwko; ;i;i;i; iwk; 0; 0i}ko; ;i;i;i; i}k; 0; 0i~ko; ;i;i;i; i~k; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0iko; ;i;i;i; ik; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0i oo; ;i;i;i; i o; 0; 0i oo; ;i;i;i; i o; 0; 0i oo; ;i;i;i; i o; 0; 0i oo; ;i;i;i; i o; 0; 0i oo; ;i;i;i; i o; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0i oo; ;i;i;i; i o; 0; 0i!oo; ;i;i;i; i!o; 0; 0i"oo; ;i;i;i; i"o; 0; 0i#oo; ;i;i;i; i#o; 0; 0i$oo; ;i;i;i; i$o; 0; 0i%oo; ;i;i;i; i%o; 0; 0i&oo; ;i;i;i; i&o; 0; 0i'oo; ;i;i;i; i'o; 0; 0i(oo; ;i;i;i; i(o; 0; 0i)oo; ;i;i;i; i)o; 0; 0i*oo; ;i;i;i; i*o; 0; 0i+oo; ;i;i;i; i+o; 0; 0i,oo; ;i;i;i; i,o; 0; 0i-oo; ;i;i;i; i-o; 0; 0i.oo; ;i;i;i; i.o; 0; 0i/oo; ;i;i;i; i/o; 0; 0i0oo; ;i;i;i; i0o; 0; 0i1oo; ;i;i;i; i1o; 0; 0i2oo; ;i;i;i; i2o; 0; 0i3oo; ;i;i;i; i3o; 0; 0i4oo; ;i;i;i; i4o; 0; 0i5oo; ;i;i;i; i5o; 0; 0i6oo; ;i;i;i; i6o; 0; 0i7oo; ;i;i;i; i7o; 0; 0i8oo; ;i;i;i; i8o; 0; 0i9oo; ;i;i;i; i9o; 0; 0i:oo; ;i;i;i; i:o; 0; 0i;oo; ;i;i;i; i;o; 0; 0ioo; ;i;i;i; i>o; 0; 0i?oo; ;i;i;i; i?o; 0; 0i@oo; ;i;i;i; i@o; 0; 0iAoo; ;i;i;i; iAo; 0; 0iBoo; ;i;i;i; iBo; 0; 0iCoo; ;i;i;i; iCo; 0; 0iDoo; ;i;i;i; iDo; 0; 0iPoo; ;i;i;i; iPo; 0; 0iQoo; ;i;i;i; iQo; 0; 0iRoo; ;i;i;i; iRo; 0; 0iSoo; ;i;i;i; iSo; 0; 0iToo; ;i;i;i; iTo; 0; 0iUoo; ;i;i;i; iUo; 0; 0iVoo; ;i;i;i; iVo; 0; 0iWoo; ;i;i;i; iWo; 0; 0iXoo; ;i;i;i; iXo; 0; 0iYoo; ;i;i;i; iYo; 0; 0iZoo; ;i;i;i; iZo; 0; 0i[oo; ;i;i;i; i[o; 0; 0i\oo; ;i;i;i; i\o; 0; 0i]oo; ;i;i;i; i]o; 0; 0i^oo; ;i;i;i; i^o; 0; 0i_oo; ;i;i;i; i_o; 0; 0i`oo; ;i;i;i; i`o; 0; 0iaoo; ;i;i;i; iao; 0; 0iboo; ;i;i;i; ibo; 0; 0icoo; ;i;i;i; ico; 0; 0idoo; ;i;i;i; ido; 0; 0ieoo; ;i;i;i; ieo; 0; 0ifoo; ;i;i;i; ifo; 0; 0igoo; ;i;i;i; igo; 0; 0ihoo; ;i;i;i; iho; 0; 0iioo; ;i;i;i; iio; 0; 0ijoo; ;i;i;i; ijo; 0; 0ikoo; ;i;i;i; iko; 0; 0iloo; ;i;i;i; ilo; 0; 0imoo; ;i;i;i; imo; 0; 0inoo; ;i;i;i; ino; 0; 0iooo; ;i;i;i; ioo; 0; 0ipoo; ;i;i;i; ipo; 0; 0iqoo; ;i;i;i; iqo; 0; 0iroo; ;i;i;i; iro; 0; 0isoo; ;i;i;i; iso; 0; 0itoo; ;i;i;i; ito; 0; 0iuoo; ;i;i;i; iuo; 0; 0ivoo; ;i;i;i; ivo; 0; 0iwoo; ;i;i;i; iwo; 0; 0ixoo; ;i;i;i; ixo; 0; 0iyoo; ;i;i;i; iyo; 0; 0izoo; ;i;i;i; izo; 0; 0i{oo; ;i;i;i; i{o; 0; 0i|oo; ;i;i;i; i|o; 0; 0i}oo; ;i;i;i; i}o; 0; 0i~oo; ;i;i;i; i~o; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0ioo; ;i;i;i; io; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; [iWiei_o; ;i;i;i; i_; 0; [iXiei`o; ;i;i;i; i`; 0; [i_iniao; ;i;i;i; ia; 0; [i_ioibo; ;i;i;i; ib; 0; [i_ipico; ;i;i;i; ic; 0; [i_iqido; ;i;i;i; id; 0; [i_irieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [iieio; ;i;i;i; i; 0; [iieio; ;i;i;i; i; 0; [iinio; ;i;i;i; i; 0; [iinio; ;i;i;i; i; 0; [iioio; ;i;i;i; i; 0; [iioio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0io; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iKio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iMio; ;i;i;i; i; I" font; T; [iNi o; ;i;i;i; i ; I" font; T; [iOi o; ;i;i;i; i ; I" font; T; [iPi o; ;i;i;i; i ; I" font; T; [iQi o; ;i;i;i; i ; I" font; T; [iRi o; ;i;i;i; i ; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [iki o; ;i;i;i; i ; I" font; T; [ili!o; ;i;i;i; i!; I" font; T; [imi"o; ;i;i;i; i"; I" font; T; [ini#o; ;i;i;i; i#; I" font; T; [ioi$o; ;i;i;i; i$; I" font; T; [ipi%o; ;i;i;i; i%; I" font; T; [iqi&o; ;i;i;i; i&; I" font; T; [iri'o; ;i;i;i; i'; I" font; T; [isi(o; ;i;i;i; i(; I" font; T; [iti)o; ;i;i;i; i); I" font; T; [iui*o; ;i;i;i; i*; I" font; T; [ivi+o; ;i;i;i; i+; I" font; T; [iwi,o; ;i;i;i; i,; I" font; T; [ixi-o; ;i;i;i; i-; I" font; T; [iyi.o; ;i;i;i; i.; I" font; T; [izi/o; ;i;i;i; i/; I" font; T; [i{i0o; ;i;i;i; i0; I" font; T; [i|i1o; ;i;i;i; i1; I" font; T; [i}i2o; ;i;i;i; i2; I" font; T; [i~i3o; ;i;i;i; i3; I" font; T; [ii4o; ;i;i;i; i4; I" font; T; [iFi5o; ;i;i;i; i5; I" font; T; [iGi6o; ;i;i;i; i6; I" font; T; [iHi7o; ;i;i;i; i7; I" font; T; [iIi8o; ;i;i;i; i8; I" font; T; [iJi9o; ;i;i;i; i9; I" font; T; [iKi:o; ;i;i;i; i:; I" font; T; [iLi;o; ;i;i;i; i;; I" font; T; [iMi<o; ;i;i;i; i<; I" font; T; [iNi=o; ;i;i;i; i=; I" font; T; [iOi>o; ;i;i;i; i>; I" font; T; [iPi?o; ;i;i;i; i?; I" font; T; [iQi@o; ;i;i;i; i@; I" font; T; [iRiAo; ;i;i;i; iA; I" font; T; [iSiBo; ;i;i;i; iB; I" font; T; [iTiCo; ;i;i;i; iC; I" font; T; [iUiDo; ;i;i;i; iD; I" font; T; [iViEo; ;i;i;i; iE; I" font; T; [iWiFo; ;i;i;i; iF; I" font; T; [iXiGo; ;i;i;i; iG; I" font; T; [iYiHo; ;i;i;i; iH; I" font; T; [iZiIo; ;i;i;i; iI; I" font; T; [i[iJo; ;i;i;i; iJ; I" font; T; [i\iKo; ;i;i;i; iK; I" font; T; [i]iLo; ;i;i;i; iL; I" font; T; [i^iMo; ;i;i;i; iM; I" font; T; [i_iNo; ;i;i;i; iN; I" font; T; [ifiOo; ;i;i;i; iO; I" font; T; [igiPo; ;i;i;i; iP; I" font; T; [ihiQo; ;i;i;i; iQ; I" font; T; [iiiRo; ;i;i;i; iR; I" font; T; [ijiSo; ;i;i;i; iS; I" font; T; [ikiTo; ;i;i;i; iT; I" font; T; [iliVo; ;i;i;i; iV; I" font; T; [iniWo; ;i;i;i; iW; I" font; T; [ioiXo; ;i;i;i; iX; I" font; T; [ipiYo; ;i;i;i; iY; I" font; T; [iqiZo; ;i;i;i; iZ; I" font; T; [iri[o; ;i;i;i; i[; I" font; T; [isi\o; ;i;i;i; i\; I" font; T; [iti]o; ;i;i;i; i]; I" font; T; [iui^o; ;i;i;i; i^; I" font; T; [ivi_o; ;i;i;i; i_; I" font; T; [iwi`o; ;i;i;i; i`; I" font; T; [ixiao; ;i;i;i; ia; I" font; T; [iyibo; ;i;i;i; ib; I" font; T; [izico; ;i;i;i; ic; I" font; T; [i{ido; ;i;i;i; id; I" font; T; [i|ieo; ;i;i;i; ie; I" font; T; [i}ifo; ;i;i;i; if; I" font; T; [i~igo; ;i;i;i; ig; I" font; T; [iiho; ;i;i;i; ih; I" font; T; [iFiio; ;i;i;i; ii; I" font; T; [iGijo; ;i;i;i; ij; I" font; T; [iHiko; ;i;i;i; ik; I" font; T; [iIilo; ;i;i;i; il; I" font; T; [iJimo; ;i;i;i; im; I" font; T; [iKino; ;i;i;i; in; I" font; T; [iLioo; ;i;i;i; io; I" font; T; [iMipo; ;i;i;i; ip; I" font; T; [iNiqo; ;i;i;i; iq; I" font; T; [iOiro; ;i;i;i; ir; I" font; T; [iPiso; ;i;i;i; is; I" font; T; [iQito; ;i;i;i; it; I" font; T; [iRiuo; ;i;i;i; iu; I" font; T; [iSivo; ;i;i;i; iv; I" font; T; [iTiwo; ;i;i;i; iw; I" font; T; [iUixo; ;i;i;i; ix; I" font; T; [iViyo; ;i;i;i; iy; I" font; T; [iWizo; ;i;i;i; iz; I" font; T; [iXi{o; ;i;i;i; i{; I" font; T; [iYi|o; ;i;i;i; i|; I" font; T; [iZi}o; ;i;i;i; i}; I" font; T; [i[i~o; ;i;i;i; i~; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iKio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iMio; ;i;i;i; i; I" font; T; [iNio; ;i;i;i; i; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iQio; ;i;i;i; i; I" font; T; [iRio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iJi o; ;i;i;i; i ; I" font; T; [iKi o; ;i;i;i; i ; I" font; T; [iLi o; ;i;i;i; i ; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iQio; ;i;i;i; i; I" font; T; [iRio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igi o; ;i;i;i; i ; I" font; T; [ihi!o; ;i;i;i; i!; I" font; T; [iii"o; ;i;i;i; i"; I" font; T; [iji#o; ;i;i;i; i#; I" font; T; [iki$o; ;i;i;i; i$; I" font; T; [ili%o; ;i;i;i; i%; I" font; T; [imi&o; ;i;i;i; i&; I" font; T; [ini'o; ;i;i;i; i'; I" font; T; [ioi(o; ;i;i;i; i(; I" font; T; [ipi)o; ;i;i;i; i); I" font; T; [iqi*o; ;i;i;i; i*; I" font; T; [iri+o; ;i;i;i; i+; I" font; T; [isi,o; ;i;i;i; i,; I" font; T; [iti-o; ;i;i;i; i-; I" font; T; [iui.o; ;i;i;i; i.; I" font; T; [ivi/o; ;i;i;i; i/; I" font; T; [iwi0o; ;i;i;i; i0; I" font; T; [ixi1o; ;i;i;i; i1; I" font; T; [iyi2o; ;i;i;i; i2; I" font; T; [izi3o; ;i;i;i; i3; I" font; T; [i{i4o; ;i;i;i; i4; I" font; T; [i|i5o; ;i;i;i; i5; I" font; T; [i}i6o; ;i;i;i; i6; I" font; T; [i~i7o; ;i;i;i; i7; I" font; T; [ii8o; ;i;i;i; i8; I" font; T; [iFi9o; ;i;i;i; i9; I" font; T; [iGi;o; ;i;i;i; i;; I" font; T; [iIi<o; ;i;i;i; i<; I" font; T; [iJi=o; ;i;i;i; i=; I" font; T; [iKi>o; ;i;i;i; i>; I" font; T; [iLi@o; ;i;i;i; i@; I" font; T; [iNiAo; ;i;i;i; iA; I" font; T; [iOiBo; ;i;i;i; iB; I" font; T; [iPiCo; ;i;i;i; iC; I" font; T; [iQiDo; ;i;i;i; iD; I" font; T; [iRiFo; ;i;i;i; iF; I" font; T; [iTiJo; ;i;i;i; iJ; I" font; T; [iXiKo; ;i;i;i; iK; I" font; T; [iYiLo; ;i;i;i; iL; I" font; T; [iZiMo; ;i;i;i; iM; I" font; T; [i[iNo; ;i;i;i; iN; I" font; T; [i\iOo; ;i;i;i; iO; I" font; T; [i]iPo; ;i;i;i; iP; I" font; T; [i^iRo; ;i;i;i; iR; I" font; T; [ifiSo; ;i;i;i; iS; I" font; T; [igiTo; ;i;i;i; iT; I" font; T; [ihiUo; ;i;i;i; iU; I" font; T; [iiiVo; ;i;i;i; iV; I" font; T; [ijiWo; ;i;i;i; iW; I" font; T; [ikiXo; ;i;i;i; iX; I" font; T; [iliYo; ;i;i;i; iY; I" font; T; [imiZo; ;i;i;i; iZ; I" font; T; [ini[o; ;i;i;i; i[; I" font; T; [ioi\o; ;i;i;i; i\; I" font; T; [ipi]o; ;i;i;i; i]; I" font; T; [iqi^o; ;i;i;i; i^; I" font; T; [iri_o; ;i;i;i; i_; I" font; T; [isi`o; ;i;i;i; i`; I" font; T; [itiao; ;i;i;i; ia; I" font; T; [iuibo; ;i;i;i; ib; I" font; T; [ivico; ;i;i;i; ic; I" font; T; [iwido; ;i;i;i; id; I" font; T; [ixieo; ;i;i;i; ie; I" font; T; [iyifo; ;i;i;i; if; I" font; T; [izigo; ;i;i;i; ig; I" font; T; [i{iho; ;i;i;i; ih; I" font; T; [i|iio; ;i;i;i; ii; I" font; T; [i}ijo; ;i;i;i; ij; I" font; T; [i~iko; ;i;i;i; ik; I" font; T; [iilo; ;i;i;i; il; I" font; T; [iFimo; ;i;i;i; im; I" font; T; [iGino; ;i;i;i; in; I" font; T; [iHioo; ;i;i;i; io; I" font; T; [iIipo; ;i;i;i; ip; I" font; T; [iJiqo; ;i;i;i; iq; I" font; T; [iKiro; ;i;i;i; ir; I" font; T; [iLiso; ;i;i;i; is; I" font; T; [iMito; ;i;i;i; it; I" font; T; [iNiuo; ;i;i;i; iu; I" font; T; [iOivo; ;i;i;i; iv; I" font; T; [iPiwo; ;i;i;i; iw; I" font; T; [iQixo; ;i;i;i; ix; I" font; T; [iRiyo; ;i;i;i; iy; I" font; T; [iSizo; ;i;i;i; iz; I" font; T; [iTi{o; ;i;i;i; i{; I" font; T; [iUi|o; ;i;i;i; i|; I" font; T; [iVi}o; ;i;i;i; i}; I" font; T; [iWi~o; ;i;i;i; i~; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iKio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iMio; ;i;i;i; i; I" font; T; [iNio; ;i;i;i; i; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iQio; ;i;i;i; i; I" font; T; [iRio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [iIio; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iKio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iMio; ;i;i;i; i; I" font; T; [iNio; ;i;i;i; i; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iQio; ;i;i;i; i; I" font; T; [iRio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iFi o; ;i;i;i; i ; I" font; T; [iGi o; ;i;i;i; i ; I" font; T; [iHi o; ;i;i;i; i ; I" font; T; [iIi o; ;i;i;i; i ; I" font; T; [iJi o; ;i;i;i; i ; I" font; T; [iKio; ;i;i;i; i; I" font; T; [iLio; ;i;i;i; i; I" font; T; [iMio; ;i;i;i; i; I" font; T; [iNio; ;i;i;i; i; I" font; T; [iOio; ;i;i;i; i; I" font; T; [iPio; ;i;i;i; i; I" font; T; [iQio; ;i;i;i; i; I" font; T; [iRio; ;i;i;i; i; I" font; T; [iSio; ;i;i;i; i; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]i o; ;i;i;i; i ; I" font; T; [i^i!o; ;i;i;i; i!; I" font; T; [i_i"o; ;i;i;i; i"; I" font; T; [ifi#o; ;i;i;i; i#; I" font; T; [igi$o; ;i;i;i; i$; I" font; T; [ihi%o; ;i;i;i; i%; I" font; T; [iii&o; ;i;i;i; i&; I" font; T; [iji'o; ;i;i;i; i'; I" font; T; [iki(o; ;i;i;i; i(; I" font; T; [ili)o; ;i;i;i; i); I" font; T; [imi*o; ;i;i;i; i*; I" font; T; [ini+o; ;i;i;i; i+; I" font; T; [ioi,o; ;i;i;i; i,; I" font; T; [ipi-o; ;i;i;i; i-; I" font; T; [iqi.o; ;i;i;i; i.; I" font; T; [iri/o; ;i;i;i; i/; I" font; T; [isi0o; ;i;i;i; i0; I" font; T; [iti1o; ;i;i;i; i1; I" font; T; [iui2o; ;i;i;i; i2; I" font; T; [ivi3o; ;i;i;i; i3; I" font; T; [iwi4o; ;i;i;i; i4; I" font; T; [ixi5o; ;i;i;i; i5; I" font; T; [iyi6o; ;i;i;i; i6; I" font; T; [izi7o; ;i;i;i; i7; I" font; T; [i{i8o; ;i;i;i; i8; I" font; T; [i|i9o; ;i;i;i; i9; I" font; T; [i}i:o; ;i;i;i; i:; I" font; T; [i~i;o; ;i;i;i; i;; I" font; T; [ii<o; ;i;i;i; i<; I" font; T; [iFi=o; ;i;i;i; i=; I" font; T; [iGi>o; ;i;i;i; i>; I" font; T; [iHi?o; ;i;i;i; i?; I" font; T; [iIi@o; ;i;i;i; i@; I" font; T; [iJiAo; ;i;i;i; iA; I" font; T; [iKiBo; ;i;i;i; iB; I" font; T; [iLiCo; ;i;i;i; iC; I" font; T; [iMiDo; ;i;i;i; iD; I" font; T; [iNiEo; ;i;i;i; iE; I" font; T; [iOiFo; ;i;i;i; iF; I" font; T; [iPiGo; ;i;i;i; iG; I" font; T; [iQiHo; ;i;i;i; iH; I" font; T; [iRiIo; ;i;i;i; iI; I" font; T; [iSiJo; ;i;i;i; iJ; I" font; T; [iTiKo; ;i;i;i; iK; I" font; T; [iUiLo; ;i;i;i; iL; I" font; T; [iViMo; ;i;i;i; iM; I" font; T; [iWiNo; ;i;i;i; iN; I" font; T; [iXiOo; ;i;i;i; iO; I" font; T; [iYiPo; ;i;i;i; iP; I" font; T; [iZiQo; ;i;i;i; iQ; I" font; T; [i[iRo; ;i;i;i; iR; I" font; T; [i\iSo; ;i;i;i; iS; I" font; T; [i]iTo; ;i;i;i; iT; I" font; T; [i^iUo; ;i;i;i; iU; I" font; T; [i_iVo; ;i;i;i; iV; I" font; T; [ifiWo; ;i;i;i; iW; I" font; T; [igiXo; ;i;i;i; iX; I" font; T; [ihiYo; ;i;i;i; iY; I" font; T; [iiiZo; ;i;i;i; iZ; I" font; T; [iji[o; ;i;i;i; i[; I" font; T; [iki\o; ;i;i;i; i\; I" font; T; [ili]o; ;i;i;i; i]; I" font; T; [imi^o; ;i;i;i; i^; I" font; T; [ini_o; ;i;i;i; i_; I" font; T; [ioi`o; ;i;i;i; i`; I" font; T; [ipiao; ;i;i;i; ia; I" font; T; [iqibo; ;i;i;i; ib; I" font; T; [irico; ;i;i;i; ic; I" font; T; [isido; ;i;i;i; id; I" font; T; [itieo; ;i;i;i; ie; I" font; T; [iuifo; ;i;i;i; if; I" font; T; [ivigo; ;i;i;i; ig; I" font; T; [iwiho; ;i;i;i; ih; I" font; T; [ixiio; ;i;i;i; ii; I" font; T; [iyijo; ;i;i;i; ij; I" font; T; [iziko; ;i;i;i; ik; I" font; T; [i{ilo; ;i;i;i; il; I" font; T; [i|imo; ;i;i;i; im; I" font; T; [i}ino; ;i;i;i; in; I" font; T; [i~ioo; ;i;i;i; io; I" font; T; [iipo; ;i;i;i; ip; I" font; T; [iFiqo; ;i;i;i; iq; I" font; T; [iGiro; ;i;i;i; ir; I" font; T; [iHiso; ;i;i;i; is; I" font; T; [iIito; ;i;i;i; it; I" font; T; [iJiuo; ;i;i;i; iu; I" font; T; [iKivo; ;i;i;i; iv; I" font; T; [iLiwo; ;i;i;i; iw; I" font; T; [iMixo; ;i;i;i; ix; I" font; T; [iNiyo; ;i;i;i; iy; I" font; T; [iOizo; ;i;i;i; iz; I" font; T; [iPi{o; ;i;i;i; i{; I" font; T; [iQi|o; ;i;i;i; i|; I" font; T; [iRi}o; ;i;i;i; i}; I" font; T; [iSi~o; ;i;i;i; i~; I" font; T; [iTio; ;i;i;i; i; I" font; T; [iUio; ;i;i;i; i; I" font; T; [iVio; ;i;i;i; i; I" font; T; [iWio; ;i;i;i; i; I" font; T; [iXio; ;i;i;i; i; I" font; T; [iYio; ;i;i;i; i; I" font; T; [iZio; ;i;i;i; i; I" font; T; [i[io; ;i;i;i; i; I" font; T; [i\io; ;i;i;i; i; I" font; T; [i]io; ;i;i;i; i; I" font; T; [i^io; ;i;i;i; i; I" font; T; [i_io; ;i;i;i; i; I" font; T; [ifio; ;i;i;i; i; I" font; T; [igio; ;i;i;i; i; I" font; T; [ihio; ;i;i;i; i; I" font; T; [iiio; ;i;i;i; i; I" font; T; [ijio; ;i;i;i; i; I" font; T; [ikio; ;i;i;i; i; I" font; T; [ilio; ;i;i;i; i; I" font; T; [imio; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [ioio; ;i;i;i; i; I" font; T; [ipio; ;i;i;i; i; I" font; T; [iqio; ;i;i;i; i; I" font; T; [irio; ;i;i;i; i; I" font; T; [isio; ;i;i;i; i; I" font; T; [itio; ;i;i;i; i; I" font; T; [iuio; ;i;i;i; i; I" font; T; [ivio; ;i;i;i; i; I" font; T; [iwio; ;i;i;i; i; I" font; T; [ixio; ;i;i;i; i; I" font; T; [iyio; ;i;i;i; i; I" font; T; [izio; ;i;i;i; i; I" font; T; [i{io; ;i;i;i; i; I" font; T; [i|io; ;i;i;i; i; I" font; T; [i}io; ;i;i;i; i; I" font; T; [i~io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i1io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [ii o; ;i;i;i; i ; I" font; T; [ii!o; ;i;i;i; i!; I" font; T; [ii"o; ;i;i;i; i"; I" font; T; [ii#o; ;i;i;i; i#; I" font; T; [ii$o; ;i;i;i; i$; I" font; T; [ii%o; ;i;i;i; i%; I" font; T; [ii&o; ;i;i;i; i&; I" font; T; [ii'o; ;i;i;i; i'; I" font; T; [ii(o; ;i;i;i; i(; I" font; T; [ii)o; ;i;i;i; i); I" font; T; [ii*o; ;i;i;i; i*; I" font; T; [ii+o; ;i;i;i; i+; I" font; T; [ii,o; ;i;i;i; i,; I" font; T; [ii-o; ;i;i;i; i-; I" font; T; [ii.o; ;i;i;i; i.; I" font; T; [ii/o; ;i;i;i; i/; I" font; T; [ii0o; ;i;i;i; i0; I" font; T; [ii1o; ;i;i;i; i1; I" font; T; [ii2o; ;i;i;i; i2; I" font; T; [ii3o; ;i;i;i; i3; I" font; T; [ii4o; ;i;i;i; i4; I" font; T; [ii5o; ;i;i;i; i5; I" font; T; [i"i6o; ;i;i;i; i6; I" font; T; [ii7o; ;i;i;i; i7; I" font; T; [ii8o; ;i;i;i; i8; I" font; T; [ii9o; ;i;i;i; i9; I" font; T; [ii:o; ;i;i;i; i:; I" font; T; [ii;o; ;i;i;i; i;; I" font; T; [ii<o; ;i;i;i; i<; I" font; T; [ii=o; ;i;i;i; i=; I" font; T; [ii>o; ;i;i;i; i>; I" font; T; [ii?o; ;i;i;i; i?; I" font; T; [ii@o; ;i;i;i; i@; I" font; T; [iiAo; ;i;i;i; iA; I" font; T; [iiBo; ;i;i;i; iB; I" font; T; [iiCo; ;i;i;i; iC; I" font; T; [iiDo; ;i;i;i; iD; I" font; T; [iiEo; ;i;i;i; iE; I" font; T; [iiFo; ;i;i;i; iF; I" font; T; [iiGo; ;i;i;i; iG; I" font; T; [iiHo; ;i;i;i; iH; I" font; T; [iiIo; ;i;i;i; iI; I" font; T; [iiJo; ;i;i;i; iJ; I" font; T; [iiKo; ;i;i;i; iK; I" font; T; [iiLo; ;i;i;i; iL; I" font; T; [iiMo; ;i;i;i; iM; I" font; T; [iiNo; ;i;i;i; iN; I" font; T; [iiOo; ;i;i;i; iO; I" font; T; [i"iPo; ;i;i;i; iP; I" font; T; [iiQo; ;i;i;i; iQ; I" font; T; [iiRo; ;i;i;i; iR; I" font; T; [iiSo; ;i;i;i; iS; I" font; T; [iiTo; ;i;i;i; iT; I" font; T; [iiUo; ;i;i;i; iU; I" font; T; [iiVo; ;i;i;i; iV; I" font; T; [iiWo; ;i;i;i; iW; I" font; T; [iiXo; ;i;i;i; iX; I" font; T; [iiYo; ;i;i;i; iY; I" font; T; [iiZo; ;i;i;i; iZ; I" font; T; [ii[o; ;i;i;i; i[; I" font; T; [ii\o; ;i;i;i; i\; I" font; T; [ii]o; ;i;i;i; i]; I" font; T; [ii^o; ;i;i;i; i^; I" font; T; [ii_o; ;i;i;i; i_; I" font; T; [ii`o; ;i;i;i; i`; I" font; T; [iiao; ;i;i;i; ia; I" font; T; [iibo; ;i;i;i; ib; I" font; T; [iico; ;i;i;i; ic; I" font; T; [iido; ;i;i;i; id; I" font; T; [iieo; ;i;i;i; ie; I" font; T; [iifo; ;i;i;i; if; I" font; T; [iigo; ;i;i;i; ig; I" font; T; [iiho; ;i;i;i; ih; I" font; T; [iiio; ;i;i;i; ii; I" font; T; [iijo; ;i;i;i; ij; I" font; T; [iiko; ;i;i;i; ik; I" font; T; [iilo; ;i;i;i; il; I" font; T; [iimo; ;i;i;i; im; I" font; T; [iino; ;i;i;i; in; I" font; T; [iioo; ;i;i;i; io; I" font; T; [i"ipo; ;i;i;i; ip; I" font; T; [iiqo; ;i;i;i; iq; I" font; T; [iiro; ;i;i;i; ir; I" font; T; [iiso; ;i;i;i; is; I" font; T; [iito; ;i;i;i; it; I" font; T; [iiuo; ;i;i;i; iu; I" font; T; [iivo; ;i;i;i; iv; I" font; T; [iiwo; ;i;i;i; iw; I" font; T; [iixo; ;i;i;i; ix; I" font; T; [iiyo; ;i;i;i; iy; I" font; T; [iizo; ;i;i;i; iz; I" font; T; [ii{o; ;i;i;i; i{; I" font; T; [ii|o; ;i;i;i; i|; I" font; T; [ii}o; ;i;i;i; i}; I" font; T; [ii~o; ;i;i;i; i~; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i"io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i;io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i;io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i;io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i;io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i;io; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" font; T; [i'io; ;i;i;i; i; I" font; T; [i(io; ;i;i;i; i; I" font; T; [i,io; ;i;i;i; i; I" font; T; [i/io; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [i2io; ;i;i;i; i; I" font; T; [i-io; ;i;i;i; i; I" font; T; [i7i o; ;i;i;i; i ; I" font; T; [iJi o; ;i;i;i; i ; I" font; T; [iCi o; ;i;i;i; i ; I" font; T; [iDi o; ;i;i;i; i ; I" font; T; [iEi o; ;i;i;i; i ; I" font; T; [iFio; ;i;i;i; i; I" font; T; [i3io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [iAio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [iBio; ;i;i;i; i; I" font; T; [i1io; ;i;i;i; i; I" font; T; [i4io; ;i;i;i; i; I" font; T; [i*io; ;i;i;i; i; I" font; T; [i+io; ;i;i;i; i; I" font; T; [i.io; ;i;i;i; i; I" font; T; [i0io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [inio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [iio; ;i;i;i; i; I" font; T; [ioi!o; ;i;i;i; i!; I" font; T; [i(i"o; ;i;i;i; i"; I" font; T; [i,i$o; ;i;i;i; i$; I" font; T; [iGi'o; ;i;i;i; i'; I" font; T; [i-i)o; ;i;i;i; i); I" font; T; [iJi*o; ;i;i;i; i*; I" font; T; [iCi+o; ;i;i;i; i+; I" font; T; [iDi,o; ;i;i;i; i,; I" font; T; [iEi-o; ;i;i;i; i-; I" font; T; [iFi.o; ;i;i;i; i.; I" font; T; [i3i/o; ;i;i;i; i/; I" font; T; [i9i0o; ;i;i;i; i0; I" font; T; [iAi1o; ;i;i;i; i1; I" font; T; [i5i2o; ;i;i;i; i2; I" font; T; [iBi4o; ;i;i;i; i4; I" font; T; [i4i5o; ;i;i;i; i5; I" font; T; [i*i6o; ;i;i;i; i6; I" font; T; [i+i7o; ;i;i;i; i7; I" font; T; [i.i9o; ;i;i;i; i9; I" font; T; [i6i;o; ;i;i;i; i;; I" font; T; [i:iBo; ;i;i;i; iB; I" font; T; [i,iGo; ;i;i;i; iG; I" font; T; [i-iIo; ;i;i;i; iI; I" font; T; [iJiKo; ;i;i;i; iK; I" font; T; [iDiMo; ;i;i;i; iM; I" font; T; [iFiNo; ;i;i;i; iN; I" font; T; [i3iOo; ;i;i;i; iO; I" font; T; [i9iQo; ;i;i;i; iQ; I" font; T; [i5iRo; ;i;i;i; iR; I" font; T; [iBiTo; ;i;i;i; iT; I" font; T; [i4iWo; ;i;i;i; iW; I" font; T; [i.iYo; ;i;i;i; iY; I" font; T; [i6i[o; ;i;i;i; i[; I" font; T; [i:i]o; ;i;i;i; i]; I" font; T; [ii_o; ;i;i;i; i_; I" font; T; [ioiao; ;i;i;i; ia; I" font; T; [i(ibo; ;i;i;i; ib; I" font; T; [i,ido; ;i;i;i; id; I" font; T; [iGigo; ;i;i;i; ig; I" font; T; [i-iho; ;i;i;i; ih; I" font; T; [i7iio; ;i;i;i; ii; I" font; T; [iJijo; ;i;i;i; ij; I" font; T; [iCilo; ;i;i;i; il; I" font; T; [iEimo; ;i;i;i; im; I" font; T; [iFino; ;i;i;i; in; I" font; T; [i3ioo; ;i;i;i; io; I" font; T; [i9ipo; ;i;i;i; ip; I" font; T; [iAiqo; ;i;i;i; iq; I" font; T; [i5iro; ;i;i;i; ir; I" font; T; [iBito; ;i;i;i; it; I" font; T; [i4iuo; ;i;i;i; iu; I" font; T; [i*ivo; ;i;i;i; iv; I" font; T; [i+iwo; ;i;i;i; iw; I" font; T; [i.iyo; ;i;i;i; iy; I" font; T; [i6izo; ;i;i;i; iz; I" font; T; [i8i{o; ;i;i;i; i{; I" font; T; [i:i|o; ;i;i;i; i|; I" font; T; [ini~o; ;i;i;i; i~; I" font; T; [iio; ;i;i;i; i; I" font; T; [i'io; ;i;i;i; i; I" font; T; [i(io; ;i;i;i; i; I" font; T; [i,io; ;i;i;i; i; I" font; T; [i/io; ;i;i;i; i; I" font; T; [iGio; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [i2io; ;i;i;i; i; I" font; T; [i-io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iDio; ;i;i;i; i; I" font; T; [iEio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [i3io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [iAio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [iBio; ;i;i;i; i; I" font; T; [i1io; ;i;i;i; i; I" font; T; [i4io; ;i;i;i; i; I" font; T; [i*io; ;i;i;i; i; I" font; T; [i+io; ;i;i;i; i; I" font; T; [i.io; ;i;i;i; i; I" font; T; [i0io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; I" font; T; [i(io; ;i;i;i; i; I" font; T; [i,io; ;i;i;i; i; I" font; T; [i/io; ;i;i;i; i; I" font; T; [iHio; ;i;i;i; i; I" font; T; [i2io; ;i;i;i; i; I" font; T; [i-io; ;i;i;i; i; I" font; T; [i7io; ;i;i;i; i; I" font; T; [iJio; ;i;i;i; i; I" font; T; [iDio; ;i;i;i; i; I" font; T; [iEio; ;i;i;i; i; I" font; T; [iFio; ;i;i;i; i; I" font; T; [i3io; ;i;i;i; i; I" font; T; [i9io; ;i;i;i; i; I" font; T; [iAio; ;i;i;i; i; I" font; T; [i5io; ;i;i;i; i; I" font; T; [iBio; ;i;i;i; i; I" font; T; [i1io; ;i;i;i; i; I" font; T; [i4io; ;i;i;i; i; I" font; T; [i*io; ;i;i;i; i; I" font; T; [i+io; ;i;i;i; i; I" font; T; [i.io; ;i;i;i; i; I" font; T; [i0io; ;i;i;i; i; I" font; T; [i6io; ;i;i;i; i; I" font; T; [i8io; ;i;i;i; i; I" font; T; [i:io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" compat; T; [i5i3io; ;i;i;i; i; I" compat; T; [i5i1io; ;i;i;i; i; I" compat; T; [i6i1io; ;i;i;i; i; I" compat; T; [i7i1io; ;i;i;i; i; I" compat; T; [i8i1io; ;i;i;i; i; I" compat; T; [i9i1io; ;i;i;i; i; I" compat; T; [i:i1io; ;i;i;i; i; I" compat; T; [i;i1io; ;i;i;i; i; I" compat; T; [ii1i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; I" compat; T; [i-iFi.io; ;i;i;i; i; I" compat; T; [i-iGi.io; ;i;i;i; i; I" compat; T; [i-iHi.io; ;i;i;i; i; I" compat; T; [i-iIi.io; ;i;i;i; i; I" compat; T; [i-iJi.io; ;i;i;i; i; I" compat; T; [i-iKi.io; ;i;i;i; i; I" compat; T; [i-iLi.io; ;i;i;i; i; I" compat; T; [i-iMi.io; ;i;i;i; i; I" compat; T; [i-iNi.io; ;i;i;i; i; I" compat; T; [i-iOi.io; ;i;i;i; i; I" compat; T; [i-iPi.io; ;i;i;i; i; I" compat; T; [i-iQi.io; ;i;i;i; i; I" compat; T; [i-iRi.io; ;i;i;i; i; I" compat; T; [i-iSi.io; ;i;i;i; i; I" compat; T; [i-iTi.io; ;i;i;i; i; I" compat; T; [i-iUi.i o; ;i;i;i; i ; I" compat; T; [i-iVi.i!o; ;i;i;i; i!; I" compat; T; [i-iWi.i"o; ;i;i;i; i"; I" compat; T; [i-iXi.i#o; ;i;i;i; i#; I" compat; T; [i-iYi.i$o; ;i;i;i; i$; I" compat; T; [i-iZi.i%o; ;i;i;i; i%; I" compat; T; [i-i[i.i&o; ;i;i;i; i&; I" compat; T; [i-i\i.i'o; ;i;i;i; i'; I" compat; T; [i-i]i.i(o; ;i;i;i; i(; I" compat; T; [i-i^i.i)o; ;i;i;i; i); I" compat; T; [i-i_i.i*o; ;i;i;i; i*; I" compat; T; [i0iXi0i+o; ;i;i;i; i+; I" circle; T; [iHi,o; ;i;i;i; i,; I" circle; T; [iWi-o; ;i;i;i; i-; I" circle; T; [iHiIi.o; ;i;i;i; i.; I" circle; T; [i\i_i0o; ;i;i;i; i0; I" square; T; [iFi1o; ;i;i;i; i1; I" square; T; [iGi2o; ;i;i;i; i2; I" square; T; [iHi3o; ;i;i;i; i3; I" square; T; [iIi4o; ;i;i;i; i4; I" square; T; [iJi5o; ;i;i;i; i5; I" square; T; [iKi6o; ;i;i;i; i6; I" square; T; [iLi7o; ;i;i;i; i7; I" square; T; [iMi8o; ;i;i;i; i8; I" square; T; [iNi9o; ;i;i;i; i9; I" square; T; [iOi:o; ;i;i;i; i:; I" square; T; [iPi;o; ;i;i;i; i;; I" square; T; [iQi<o; ;i;i;i; i<; I" square; T; [iRi=o; ;i;i;i; i=; I" square; T; [iSi>o; ;i;i;i; i>; I" square; T; [iTi?o; ;i;i;i; i?; I" square; T; [iUi@o; ;i;i;i; i@; I" square; T; [iViAo; ;i;i;i; iA; I" square; T; [iWiBo; ;i;i;i; iB; I" square; T; [iXiCo; ;i;i;i; iC; I" square; T; [iYiDo; ;i;i;i; iD; I" square; T; [iZiEo; ;i;i;i; iE; I" square; T; [i[iFo; ;i;i;i; iF; I" square; T; [i\iGo; ;i;i;i; iG; I" square; T; [i]iHo; ;i;i;i; iH; I" square; T; [i^iIo; ;i;i;i; iI; I" square; T; [i_iJo; ;i;i;i; iJ; I" square; T; [iMi[iKo; ;i;i;i; iK; I" square; T; [iRi[iLo; ;i;i;i; iL; I" square; T; [iXiIiMo; ;i;i;i; iM; I" square; T; [iXiXiNo; ;i;i;i; iN; I" square; T; [iUiUi[iOo; ;i;i;i; iO; I" square; T; [i\iHiPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; I" super; T; [iRiHiko; ;i;i;i; ik; I" super; T; [iRiIipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" square; T; [iIiOio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; I" square; T; [i{0iK0io; ;i;i;i; i; I" square; T; [i0i0io; ;i;i;i; i; I" square; T; [i0io; ;i;i;i; i; I" square; T; [iKbio; ;i;i;i; i; I" square; T; [iW[io; ;i;i;i; i; I" square; T; [iSio; ;i;i;i; i; I" square; T; [i0io; ;i;i;i; i; I" square; T; [iNio; ;i;i;i; i; I" square; T; [iYio; ;i;i;i; i; I" square; T; [iio; ;i;i;i; i; I" square; T; [i)Yio; ;i;i;i; i; I" square; T; [iNio; ;i;i;i; i; I" square; T; [i fio; ;i;i;i; i; I" square; T; [i!qio; ;i;i;i; i; I" square; T; [ieio; ;i;i;i; i; I" square; T; [iMRio; ;i;i;i; i; I" square; T; [i_io; ;i;i;i; i; I" square; T; [iQio; ;i;i;i; i; I" square; T; [iei o; ;i;i;i; i ; I" square; T; [iRi!o; ;i;i;i; i!; I" square; T; [iB}i"o; ;i;i;i; i"; I" square; T; [iui#o; ;i;i;i; i#; I" square; T; [ii$o; ;i;i;i; i$; I" square; T; [iXi%o; ;i;i;i; i%; I" square; T; [i9Ti&o; ;i;i;i; i&; I" square; T; [ioi'o; ;i;i;i; i'; I" square; T; [ibi(o; ;i;i;i; i(; I" square; T; [iUci)o; ;i;i;i; i); I" square; T; [iNi*o; ;i;i;i; i*; I" square; T; [i Ni+o; ;i;i;i; i+; I" square; T; [iJi,o; ;i;i;i; i,; I" square; T; [i]i-o; ;i;i;i; i-; I" square; T; [i-Ni.o; ;i;i;i; i.; I" square; T; [iSi/o; ;i;i;i; i/; I" square; T; [ici0o; ;i;i;i; i0; I" square; T; [ipi1o; ;i;i;i; i1; I" square; T; [iSbi2o; ;i;i;i; i2; I" square; T; [iyi3o; ;i;i;i; i3; I" square; T; [izzi4o; ;i;i;i; i4; I" square; T; [iTi5o; ;i;i;i; i5; I" square; T; [ini6o; ;i;i;i; i6; I" square; T; [i gi7o; ;i;i;i; i7; I" square; T; [igi8o; ;i;i;i; i8; I" square; T; [i3ui9o; ;i;i;i; i9; I" square; T; [irRi:o; ;i;i;i; i:; I" square; T; [iUi@o; ;i;i;i; i@; I" compat; T; [i0i,gi0iAo; ;i;i;i; iA; I" compat; T; [i0i Ni0iBo; ;i;i;i; iB; I" compat; T; [i0iNi0iCo; ;i;i;i; iC; I" compat; T; [i0i[i0iDo; ;i;i;i; iD; I" compat; T; [i0ipi0iEo; ;i;i;i; iE; I" compat; T; [i0iSbi0iFo; ;i;i;i; iF; I" compat; T; [i0ivi0iGo; ;i;i;i; iG; I" compat; T; [i0iRi0iHo; ;i;i;i; iH; I" compat; T; [i0iWei0iPo; ;i;i;i; iP; I" circle; T; [i_iQo; ;i;i;i; iQ; I" circle; T; [iSio; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i֦o; ;i;i;i; i֦; 0; 0io; ;i;i;i; i; 0; 0i4o; ;i;i;i; i4; 0; 0i@o; ;i;i;i; i@; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; [i=Nio; ;i;i;i; i; 0; [i8Nio; ;i;i;i; i; 0; [iANio; ;i;i;i; i; 0; [i"io; ;i;i;i; i; 0; [i`Oio; ;i;i;i; i; 0; [iOio; ;i;i;i; i; 0; [iOio; ;i;i;i; i; 0; [iPio; ;i;i;i; i; 0; [izPi o; ;i;i;i; i ; 0; [iPi o; ;i;i;i; i ; 0; [iPi o; ;i;i;i; i ; 0; [iPi o; ;i;i;i; i ; 0; [i4i o; ;i;i;i; i ; 0; [i:io; ;i;i;i; i; 0; [iMQio; ;i;i;i; i; 0; [iTQio; ;i;i;i; i; 0; [idQio; ;i;i;i; i; 0; [iwQio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i4io; ;i;i;i; i; 0; [igQio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iKio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iNio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iߑio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [i4i o; ;i;i;i; i ; 0; [i;Ri!o; ;i;i;i; i!; 0; [iFRi"o; ;i;i;i; i"; 0; [irRi#o; ;i;i;i; i#; 0; [iwRi$o; ;i;i;i; i$; 0; [i5i%o; ;i;i;i; i%; 0; [iRi&o; ;i;i;i; i&; 0; [iRi'o; ;i;i;i; i'; 0; [iRi(o; ;i;i;i; i(; 0; [iRi)o; ;i;i;i; i); 0; [iSi*o; ;i;i;i; i*; 0; [iSi+o; ;i;i;i; i+; 0; [iSi,o; ;i;i;i; i,; 0; [iISi-o; ;i;i;i; i-; 0; [iQSi.o; ;i;i;i; i.; 0; [iZSi/o; ;i;i;i; i/; 0; [isSi0o; ;i;i;i; i0; 0; [i}Si1o; ;i;i;i; i1; 0; [iSi2o; ;i;i;i; i2; 0; [iSi3o; ;i;i;i; i3; 0; [iSi4o; ;i;i;i; i4; 0; [i, i5o; ;i;i;i; i5; 0; [ippi6o; ;i;i;i; i6; 0; [iSi7o; ;i;i;i; i7; 0; [iSi8o; ;i;i;i; i8; 0; [ic i9o; ;i;i;i; i9; 0; [iSi:o; ;i;i;i; i:; 0; [iSi;o; ;i;i;i; i;; 0; [iTi<o; ;i;i;i; i<; 0; [iTi=o; ;i;i;i; i=; 0; [i8Ti>o; ;i;i;i; i>; 0; [iHTi?o; ;i;i;i; i?; 0; [ihTi@o; ;i;i;i; i@; 0; [iTiAo; ;i;i;i; iA; 0; [iTiBo; ;i;i;i; iB; 0; [iUiCo; ;i;i;i; iC; 0; [iSUiDo; ;i;i;i; iD; 0; [icUiEo; ;i;i;i; iE; 0; [iUiFo; ;i;i;i; iF; 0; [iUiGo; ;i;i;i; iG; 0; [iUiHo; ;i;i;i; iH; 0; [iUiIo; ;i;i;i; iI; 0; [iUiJo; ;i;i;i; iJ; 0; [iUiKo; ;i;i;i; iK; 0; [iWiLo; ;i;i;i; iL; 0; [iViMo; ;i;i;i; iM; 0; [iWiNo; ;i;i;i; iN; 0; [iQViOo; ;i;i;i; iO; 0; [itViPo; ;i;i;i; iP; 0; [iRiQo; ;i;i;i; iQ; 0; [iXiRo; ;i;i;i; iR; 0; [iWiSo; ;i;i;i; iS; 0; [iWiTo; ;i;i;i; iT; 0; [i XiUo; ;i;i;i; iU; 0; [iWiVo; ;i;i;i; iV; 0; [i2XiWo; ;i;i;i; iW; 0; [i1XiXo; ;i;i;i; iX; 0; [iXiYo; ;i;i;i; iY; 0; [iiZo; ;i;i;i; iZ; 0; [iXi[o; ;i;i;i; i[; 0; [iXi\o; ;i;i;i; i\; 0; [iYi]o; ;i;i;i; i]; 0; [iYi^o; ;i;i;i; i^; 0; [i"Yi_o; ;i;i;i; i_; 0; [ibYi`o; ;i;i;i; i`; 0; [iiao; ;i;i;i; ia; 0; [iibo; ;i;i;i; ib; 0; [iYico; ;i;i;i; ic; 0; [iZido; ;i;i;i; id; 0; [i'Zieo; ;i;i;i; ie; 0; [iYifo; ;i;i;i; if; 0; [ifZigo; ;i;i;i; ig; 0; [i6iho; ;i;i;i; ih; 0; [i6iio; ;i;i;i; ii; 0; [i[ijo; ;i;i;i; ij; 0; [i>[iko; ;i;i;i; ik; 0; [i>[ilo; ;i;i;i; il; 0; [iimo; ;i;i;i; im; 0; [i[ino; ;i;i;i; in; 0; [i[ioo; ;i;i;i; io; 0; [i[ipo; ;i;i;i; ip; 0; [i[iqo; ;i;i;i; iq; 0; [iiro; ;i;i;i; ir; 0; [i[iso; ;i;i;i; is; 0; [i\ito; ;i;i;i; it; 0; [iS_iuo; ;i;i;i; iu; 0; [i"\ivo; ;i;i;i; iv; 0; [i7iwo; ;i;i;i; iw; 0; [i`\ixo; ;i;i;i; ix; 0; [in\iyo; ;i;i;i; iy; 0; [i\izo; ;i;i;i; iz; 0; [i\i{o; ;i;i;i; i{; 0; [ii|o; ;i;i;i; i|; 0; [iC]i}o; ;i;i;i; i}; 0; [ii~o; ;i;i;i; i~; 0; [in]io; ;i;i;i; i; 0; [ik]io; ;i;i;i; i; 0; [i|]io; ;i;i;i; i; 0; [i]io; ;i;i;i; i; 0; [i]io; ;i;i;i; i; 0; [i/8io; ;i;i;i; i; 0; [i]io; ;i;i;i; i; 0; [i(^io; ;i;i;i; i; 0; [i=^io; ;i;i;i; i; 0; [ii^io; ;i;i;i; i; 0; [ib8io; ;i;i;i; i; 0; [i!io; ;i;i;i; i; 0; [i|8io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i^io; ;i;i;i; i; 0; [i1#io; ;i;i;i; i; 0; [i1#io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i"_io; ;i;i;i; i; 0; [i"_io; ;i;i;i; i; 0; [i8io; ;i;i;i; i; 0; [i2io; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [ib_io; ;i;i;i; i; 0; [ik_io; ;i;i;i; i; 0; [i8io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i_io; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [i:9io; ;i;i;i; i; 0; [i9io; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [i&io; ;i;i;i; i; 0; [i`io; ;i;i;i; i; 0; [iHaio; ;i;i;i; i; 0; [iLaio; ;i;i;i; i; 0; [iNaio; ;i;i;i; i; 0; [iLaio; ;i;i;i; i; 0; [izaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [iaio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [i]bio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [iPcio; ;i;i;i; i; 0; [i +io; ;i;i;i; i; 0; [i=cio; ;i;i;i; i; 0; [ibio; ;i;i;i; i; 0; [ihcio; ;i;i;i; i; 0; [icio; ;i;i;i; i; 0; [icio; ;i;i;i; i; 0; [i+io; ;i;i;i; i; 0; [i"dio; ;i;i;i; i; 0; [icio; ;i;i;i; i; 0; [icio; ;i;i;i; i; 0; [i.:io; ;i;i;i; i; 0; [iidio; ;i;i;i; i; 0; [i~dio; ;i;i;i; i; 0; [idio; ;i;i;i; i; 0; [iwdio; ;i;i;i; i; 0; [il:io; ;i;i;i; i; 0; [iOeio; ;i;i;i; i; 0; [ileio; ;i;i;i; i; 0; [i 0io; ;i;i;i; i; 0; [ieio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [iIfio; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [i:io; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [iQio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [ifio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iCio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [i!gio; ;i;i;i; i; 0; [i^gio; ;i;i;i; i; 0; [iSgio; ;i;i;i; i; 0; [i3io; ;i;i;i; i; 0; [iI;io; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [iRhio; ;i;i;i; i; 0; [ihio; ;i;i;i; i; 0; [im4io; ;i;i;i; i; 0; [ihio; ;i;i;i; i; 0; [ihio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [i;io; ;i;i;i; i; 0; [iBiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [iiio; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [i6io; ;i;i;i; i; 0; [ijio; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [iwmio; ;i;i;i; i; 0; [iAmio; ;i;i;i; i; 0; [iimio; ;i;i;i; i; 0; [ixmio; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [i=io; ;i;i;i; i; 0; [i4mio; ;i;i;i; i; 0; [i/ni o; ;i;i;i; i ; 0; [inni o; ;i;i;i; i ; 0; [i3=i o; ;i;i;i; i ; 0; [ini o; ;i;i;i; i ; 0; [ini o; ;i;i;i; i ; 0; [i>io; ;i;i;i; i; 0; [imio; ;i;i;i; i; 0; [inoio; ;i;i;i; i; 0; [i^?io; ;i;i;i; i; 0; [i?io; ;i;i;i; i; 0; [ioio; ;i;i;i; i; 0; [i9pio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [i=io; ;i;i;i; i; 0; [iJpio; ;i;i;i; i; 0; [i}pio; ;i;i;i; i; 0; [iwpio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [i%io; ;i;i;i; i; 0; [iEqio; ;i;i;i; i; 0; [icBio; ;i;i;i; i; 0; [iqio; ;i;i;i; i; 0; [iCi o; ;i;i;i; i ; 0; [i(ri!o; ;i;i;i; i!; 0; [i5ri"o; ;i;i;i; i"; 0; [iPri#o; ;i;i;i; i#; 0; [iFi$o; ;i;i;i; i$; 0; [iri%o; ;i;i;i; i%; 0; [iri&o; ;i;i;i; i&; 0; [i5Gi'o; ;i;i;i; i'; 0; [iHi(o; ;i;i;i; i(; 0; [izsi)o; ;i;i;i; i); 0; [isi*o; ;i;i;i; i*; 0; [i>i+o; ;i;i;i; i+; 0; [isi,o; ;i;i;i; i,; 0; [i>i-o; ;i;i;i; i-; 0; [i>i.o; ;i;i;i; i.; 0; [iGti/o; ;i;i;i; i/; 0; [i\ti0o; ;i;i;i; i0; 0; [iqti1o; ;i;i;i; i1; 0; [iti2o; ;i;i;i; i2; 0; [iti3o; ;i;i;i; i3; 0; [i?i4o; ;i;i;i; i4; 0; [i$ui5o; ;i;i;i; i5; 0; [i6Li6o; ;i;i;i; i6; 0; [i>ui7o; ;i;i;i; i7; 0; [iLi8o; ;i;i;i; i8; 0; [ipui9o; ;i;i;i; i9; 0; [i!i:o; ;i;i;i; i:; 0; [ivi;o; ;i;i;i; i;; 0; [iOi<o; ;i;i;i; i<; 0; [iOi=o; ;i;i;i; i=; 0; [iDPi>o; ;i;i;i; i>; 0; [i?i?o; ;i;i;i; i?; 0; [i@i@o; ;i;i;i; i@; 0; [iviAo; ;i;i;i; iA; 0; [iPiBo; ;i;i;i; iB; 0; [iPiCo; ;i;i;i; iC; 0; [iQiDo; ;i;i;i; iD; 0; [i3QiEo; ;i;i;i; iE; 0; [iwiFo; ;i;i;i; iF; 0; [iwiGo; ;i;i;i; iG; 0; [iwiHo; ;i;i;i; iH; 0; [iJwiIo; ;i;i;i; iI; 0; [i9@iJo; ;i;i;i; iJ; 0; [iwiKo; ;i;i;i; iK; 0; [iF@iLo; ;i;i;i; iL; 0; [i@iMo; ;i;i;i; iM; 0; [iTiNo; ;i;i;i; iN; 0; [iNxiOo; ;i;i;i; iO; 0; [ixiPo; ;i;i;i; iP; 0; [ixiQo; ;i;i;i; iQ; 0; [i@iRo; ;i;i;i; iR; 0; [i&ViSo; ;i;i;i; iS; 0; [iVyiTo; ;i;i;i; iT; 0; [iViUo; ;i;i;i; iU; 0; [iViVo; ;i;i;i; iV; 0; [iyiWo; ;i;i;i; iW; 0; [iyiXo; ;i;i;i; iX; 0; [i/AiYo; ;i;i;i; iY; 0; [i@ziZo; ;i;i;i; iZ; 0; [iJzi[o; ;i;i;i; i[; 0; [iOzi\o; ;i;i;i; i\; 0; [i|Yi]o; ;i;i;i; i]; 0; [iZi^o; ;i;i;i; i^; 0; [iZi_o; ;i;i;i; i_; 0; [izi`o; ;i;i;i; i`; 0; [iBiao; ;i;i;i; ia; 0; [i[ibo; ;i;i;i; ib; 0; [i{ico; ;i;i;i; ic; 0; [i{ido; ;i;i;i; id; 0; [i'Bieo; ;i;i;i; ie; 0; [i\ifo; ;i;i;i; if; 0; [i|igo; ;i;i;i; ig; 0; [iBiho; ;i;i;i; ih; 0; [i|iio; ;i;i;i; ii; 0; [i|ijo; ;i;i;i; ij; 0; [i}iko; ;i;i;i; ik; 0; [i_ilo; ;i;i;i; il; 0; [ic}imo; ;i;i;i; im; 0; [iCino; ;i;i;i; in; 0; [i}ioo; ;i;i;i; io; 0; [i~ipo; ;i;i;i; ip; 0; [iE~iqo; ;i;i;i; iq; 0; [i4Ciro; ;i;i;i; ir; 0; [i(biso; ;i;i;i; is; 0; [iGbito; ;i;i;i; it; 0; [iYCiuo; ;i;i;i; iu; 0; [ibivo; ;i;i;i; iv; 0; [iziwo; ;i;i;i; iw; 0; [i>cixo; ;i;i;i; ix; 0; [iiyo; ;i;i;i; iy; 0; [iizo; ;i;i;i; iz; 0; [ii{o; ;i;i;i; i{; 0; [idi|o; ;i;i;i; i|; 0; [i#ei}o; ;i;i;i; i}; 0; [i`i~o; ;i;i;i; i~; 0; [ieio; ;i;i;i; i; 0; [ipio; ;i;i;i; i; 0; [i_3io; ;i;i;i; i; 0; [iCio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [i Dio; ;i;i;i; i; 0; [i>io; ;i;i;i; i; 0; [iZio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [igio; ;i;i;i; i; 0; [i3io; ;i;i;i; i; 0; [i3io; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [ikDio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iRio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [iio; ;i;i;i; i; 0; [io; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0i o; ;i;i;i; i ; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0i o; ;i;i;i; i ; 0; 0i!o; ;i;i;i; i!; 0; 0i"o; ;i;i;i; i"; 0; 0i#o; ;i;i;i; i#; 0; 0i$o; ;i;i;i; i$; 0; 0i%o; ;i;i;i; i%; 0; 0i&o; ;i;i;i; i&; 0; 0i'o; ;i;i;i; i'; 0; 0i(o; ;i;i;i; i(; 0; 0i)o; ;i;i;i; i); 0; 0i*o; ;i;i;i; i*; 0; 0i+o; ;i;i;i; i+; 0; 0i,o; ;i;i;i; i,; 0; 0i-o; ;i;i;i; i-; 0; 0i.o; ;i;i;i; i.; 0; 0i/o; ;i;i;i; i/; 0; 0i0o; ;i;i;i; i0; 0; 0i1o; ;i;i;i; i1; 0; 0i2o; ;i;i;i; i2; 0; 0i3o; ;i;i;i; i3; 0; 0i4o; ;i;i;i; i4; 0; 0i5o; ;i;i;i; i5; 0; 0i6o; ;i;i;i; i6; 0; 0i7o; ;i;i;i; i7; 0; 0i8o; ;i;i;i; i8; 0; 0i9o; ;i;i;i; i9; 0; 0i:o; ;i;i;i; i:; 0; 0i;o; ;i;i;i; i;; 0; 0i<o; ;i;i;i; i<; 0; 0i=o; ;i;i;i; i=; 0; 0i>o; ;i;i;i; i>; 0; 0i?o; ;i;i;i; i?; 0; 0i@o; ;i;i;i; i@; 0; 0iAo; ;i;i;i; iA; 0; 0iBo; ;i;i;i; iB; 0; 0iCo; ;i;i;i; iC; 0; 0iDo; ;i;i;i; iD; 0; 0iEo; ;i;i;i; iE; 0; 0iFo; ;i;i;i; iF; 0; 0iGo; ;i;i;i; iG; 0; 0iHo; ;i;i;i; iH; 0; 0iIo; ;i;i;i; iI; 0; 0iJo; ;i;i;i; iJ; 0; 0iKo; ;i;i;i; iK; 0; 0iLo; ;i;i;i; iL; 0; 0iMo; ;i;i;i; iM; 0; 0iNo; ;i;i;i; iN; 0; 0iOo; ;i;i;i; iO; 0; 0iPo; ;i;i;i; iP; 0; 0iQo; ;i;i;i; iQ; 0; 0iRo; ;i;i;i; iR; 0; 0iSo; ;i;i;i; iS; 0; 0iTo; ;i;i;i; iT; 0; 0iUo; ;i;i;i; iU; 0; 0iVo; ;i;i;i; iV; 0; 0iWo; ;i;i;i; iW; 0; 0iXo; ;i;i;i; iX; 0; 0iYo; ;i;i;i; iY; 0; 0iZo; ;i;i;i; iZ; 0; 0i[o; ;i;i;i; i[; 0; 0i\o; ;i;i;i; i\; 0; 0i]o; ;i;i;i; i]; 0; 0i^o; ;i;i;i; i^; 0; 0i_o; ;i;i;i; i_; 0; 0i`o; ;i;i;i; i`; 0; 0iao; ;i;i;i; ia; 0; 0ibo; ;i;i;i; ib; 0; 0ico; ;i;i;i; ic; 0; 0ido; ;i;i;i; id; 0; 0ieo; ;i;i;i; ie; 0; 0ifo; ;i;i;i; if; 0; 0igo; ;i;i;i; ig; 0; 0iho; ;i;i;i; ih; 0; 0iio; ;i;i;i; ii; 0; 0ijo; ;i;i;i; ij; 0; 0iko; ;i;i;i; ik; 0; 0ilo; ;i;i;i; il; 0; 0imo; ;i;i;i; im; 0; 0ino; ;i;i;i; in; 0; 0ioo; ;i;i;i; io; 0; 0ipo; ;i;i;i; ip; 0; 0iqo; ;i;i;i; iq; 0; 0iro; ;i;i;i; ir; 0; 0iso; ;i;i;i; is; 0; 0ito; ;i;i;i; it; 0; 0iuo; ;i;i;i; iu; 0; 0ivo; ;i;i;i; iv; 0; 0iwo; ;i;i;i; iw; 0; 0ixo; ;i;i;i; ix; 0; 0iyo; ;i;i;i; iy; 0; 0izo; ;i;i;i; iz; 0; 0i{o; ;i;i;i; i{; 0; 0i|o; ;i;i;i; i|; 0; 0i}o; ;i;i;i; i}; 0; 0i~o; ;i;i;i; i~; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0io; ;i;i;i; i; 0; 0o;;i;i;i[ViX iY iZ i[ i\ i] i^ i_ i i i i3 i6 iY iZ i[ i^ i\ i] iCiMiRiWi\iiivixiiiiiiiii*i+i,i-i.i/i0i1i2i3i4i5i6i8i9i:i;ii@iAiCiDiFiGiHiIiJiKiLiMiNi*i^i_i`iaibicidiiiiii{xiF{iiiiiiiiiii iiiiii(ii iiiiiii&i%ii#ii iiH{ i'iiiiiii i i iJ{iiiiiiiiiiiiiii(ii iiiiii'i(i-ii0ii#ii iiiiN{iiiiiiiiii(ii*ii,i(i.ii0i iiiii i0i,i ii#iiS{iiiiCi'iEi iGiiiiDi#iFi1iHi-iJiT{iiiiiiiiiiiiLiiNi iPiii ii(iii iiii.i#ii iiZ{iiiiiiiiiihiijiili ini ipi(iriii iiiiii$iri0iti-ivi#ii ii^{iiiiviixii2iiiii#ii iiiif{iiiiiiiiiii iiiiii(ii iiiiiii'i%ii#ii iih{ i'iiiii ii i i ij{iiiiiiiiiiiiiii(ii iiiiii'i)i-ii0ii#ii iiiin{iiiiiiiiii)ii+ii-i(i/i iii ii i0i-i ii#iis{iiiiDi'iFi iHiiiiEi#iGi1iIi-iKit{iiiiiiiiiiiiMiiOi iQiii ii(iii iiii/i#ii iiz{iiiiiiiiiiiiikiimi ioi iqi(isiii iiiiii$isi0iui-iwi#ii ii~{iiiiiiwii3iii iiii#ii iiiiI{ i iii i#i i1ii'ii-iii{ i iii i#i i1ii'ii-iiL{ iiiiii i'i"i iiiii il{ iiiiii!i'i#i iiiii!iM{ ii$i iii"i#i$ii&i'i(i.i*im{ ii%i iii#i#i%ii'i'i)i.i+i1iiO{ii4io{ii5i iiP{ i'i6i iii0i#i2i1i4ip{ i'i7i iii1i#i3i1i5iQ{ ii9i'i;i i=i#i6i1i:i-i<iq{ ii:i'i<i i>i#i7i1i;i-i=iW{ iiTi'iVi iXiiiiiiXi#iZi1i^iw{ iiUi'iWi iYiiiiiiYi#i[i1i_iX{ iiZii\i'i^i i`i&iii`i#ibix{ ii[ii]i'i_i iai&iiiai#iciY{ i'ibi idi&iiiji#ili1ini-ipiy{ i'ici iei&iiiki#imi1ioi-iqiii\{ iitiiiiiiiii#ii|{ iiuiiiiiiiii#ii ii_{ iiyii{i i}iii#ii1ii{ iizii|i i~iii#ii1ii{ iiiii iiii{ iiiii iiii{iii{iii&{iii'{iii{iiiii{iiiii{iii{iii{i ii{i ii{iii{iii{iii{iii{ii*i{ii+i{ii,iiLiiNi{ii-iiMiiOi.{ii0i/{ii1i{iiiBiiii{ iiiiii iiiiiiiEii{ iiiiiiiii{ iiii(ii)iiiEii{ iiiiii8ii9iiiiiii{ iiiiHiiIiii{ iiiiiiYiiiiiii{ iiiihiiiiiiEii{iiiiiBii{ iiiiiiiipiiiiiEiiBii{ iiiiiiiiri{ iiii ii!iitiEiiBii{ iiiiii0ii1iiviiiiiBii{iiiiiBii{ iiiiiiPiiQiiziiiiiBii{ iiii@iiAiixi{ iiii`iiaii|iEiiBii{iiiii{iiiiiii{iii{iii{ii i{ ii iiiiiii#{ iiiiiii ii8{ ii9ii]iiiii5{iiPiiQiii3{iiSiV{iiWi:{ii\iC{ ii^iiiii iit{iiviu{iiwi{iiiii6{iiiii{iiiii0{iiiii{iii{iii{iii7{iii{iii>{iii{iii{iii-{iiiM{iii'{iiiG{iii+{iiiK{iii'{iSi"iTi#iUi%iH{iTi$iJ{iTi&i{iTii{iTii{iTii( {i< i) i0 {i< i1 i3 {i< i4 i {i i i i iG {iV iH i> iK iW iL i {i i i {i i i i i {i i iF {iV iH i {i i i {i i i i i i i {i i iF {i> iJ iW iL iG {i> iK i {i i i i i i i {i i i%{i.i&i{i5ii{i5ii {i5i i {i5i i {i5ii{i5ii:{i5i;i<{i5i=i>{i5i@i?{i5iAiB{i5iCiG{iii#ii1iig{iii#ii1ii{iii{ii i{iiiii{iiiii({iii){iiiK{iiik{iii{ii.i{ii/i6{ii8i7{ii9iR{ii>ii@i#iBir{ii?iiAi#iCiL{iiPiiRiM{iiQiiSiU{iiTiiViu{iiUiiWiZ{ii\i[{ii]iZ{iidi[{iiei`{iifia{iigib{iihic{iiiih{iixii{iiyij{iizik{ii{i[{ii|i#i~i{{ii}i#ii]{iiiii}{iiiii{iii{ iiiii iiii{ iiiii iiii{iiiii{iiiii{ iiiii iiii{ iiiii iiii{ iiiii iiii{ iiiii iiii{iii{iii{ iiiii iiii{ iiiii iiii{iii{iii{ iiiii iiii#ii{ iiiii iiii#ii{ iiiii iiii#ii{ iiiii iiii#ii{ iiiiiBiiEii{ iiiiiBiiEii{ ii ii iBiiEii { ii ii iBiiEii{iiiii{iiiii{iiiii{iiiii { ii"ii$iBi&iEii!{ ii#ii%iBi'iEii({ ii*ii,iBi.iEii){ ii+ii-iBi/iEii0{ii2ii4iBi6i1{ii3ii5iBi7i8{ii:ii<iBi>i9{ii;ii=iBi?i@{iiBiiDiA{iiCiiEiH{iiJiiLiI{iiKiiMiP{iiRiiTiBiViQ{iiSiiUiBiWiY{ii[ii]iBi_i`{ iibiidiBifiEiia{ iiciieiBigiEiih{ iijiiliBiniEiii{ iikiimiBioiEii{iEii{iEii{iEii{iEii{iEii{iEii {iEii {iEii {iEii {iEii{iEii{iEii"{iEii#{iEii${iEii%{iEii&{iEii'{iEii*{iEii+{iEii,{iEii-{iEii.{iEii/{iEiib{iEiic{iEiid{iEiie{iEiif{iEiig{iEiij{iEiik{iEiil{iEiim{iEiin{iEiio{iEiip{iEii{iEii{iEiit{iEii{iEii{iEii{iiiiiBii{iiiiiBii{iiiii{iii|{iEii{iEii{iEii!{i8i!i!{i8i!i!{i8i!i!{i8i!i!{i8i!i!{i8i!i"{i8i"i"{i8i "i "{i8i "i#"{i8i$"i%"{i8i&"i<"{i8iA"iC"{i8iD"iE"{i8iG"iH"{i8iI"iB{i8i`"ia"{i8ib"iM"{i8im"iA{i8in"iC{i8io"id"{i8ip"ie"{i8iq"ir"{i8it"is"{i8iu"iv"{i8ix"iw"{i8iy"iz"{i8i"i{"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i|"{i8i"i}"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"i"{i8i"iK0{i0iL0iM0{i0iN0iO0{i0iP0iQ0{i0iR0iS0{i0iT0iU0{i0iV0iW0{i0iX0iY0{i0iZ0i[0{i0i\0i]0{i0i^0i_0{i0i`0ia0{i0ib0id0{i0ie0if0{i0ig0ih0{i0ii0io0{i0ip0i0iq0ir0{i0is0i0it0iu0{i0iv0i0iw0ix0{i0iy0i0iz0i{0{i0i|0i0i}0iF0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0i0i0{i0i0i0i0i0{i0i0i0i0i0{i0i0i0i0i0{i0i0i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i0{i0i0i{iii{iii{iii1{i'i.i2{i'i/iG{i>iKiWiLi{iiiiiii{iii{ii{:cri:lfi: control[$o: Range: exclF: begini:endio;;F;i;io;;F;i;i$o;;F;i;iio;;F;i;iiiiii o;;F;i ;i i( i) o;;F;i* ;i. o;;F;i` ;id ie o;;F;if ;io o;;F;i;iio;;F;i;io;;F;i;iio;;F;i;io;;F;is;iziio;;F;i;io;;F;i ;io;;F;i;io;;F;i;i: extend[o;;F;i;ioo;;F;i;io;;F;i;io;;F;i;iio;;F;i;io;;F;i;iio;;F;i;io;;F;iK;i_ipo;;F;i;io;;F;i;io;;F;i;io;;F;i;iio;;F;i0;iJo;;F;i;io;;F;i;io;;F;i;io;;F;i;i#o;;F;i%;i'o;;F;i);i-o;;F;iY;i[o;;F;i;i i: i< o;;F;iA ;iH iM o;;F;iQ ;iW o;;F;ib ;ic i i i o;;F;i ;i i i o;;F;i ;i o;;F;i ;i i< o;;F;iA ;iB o;;F;iG ;iH o;;F;iK ;iM iQ o;;F;ip ;iq iu o;;F;i ;i i o;;F;i ;i o;;F;i ;i i o;;F;i ;i i i< i> i? o;;F;iA ;iD iM iV iW o;;F;ib ;ic i i i i i i o;;F;i> ;i@ o;;F;iF ;iH o;;F;iJ ;iM o;;F;iU ;iV o;;F;ib ;ic i i i i i o;;F;i ;i o;;F;i ;i o;;F;i ;i i i> o;;F;iA ;iD iM iW o;;F;ib ;ic i i o;;F;i ;i i i i1o;;F;i4;i:o;;F;iG;iNio;;F;i;io;;F;i;io;;F;i;io;;F;i;ii5i7i9o;;F;iq;i~o;;F;i;io;;F;i;io;;F;i;io;;F;i;iio;;F;i-;i0o;;F;i2;i7o;;F;i9;i:o;;F;i=;i>o;;F;iX;iYo;;F;i^;i`o;;F;iq;itio;;F;i;iiio;;F;i];i_o;;F;i;io;;F;i2;i4o;;F;iR;iSo;;F;ir;iso;;F;i;io;;F;i;iio;;F;i;iio;;F;i ;i io;;F;i ;i"o;;F;i';i(i2o;;F;i9;i;o;;F;i;iiiVo;;F;iX;i^i`ibo;;F;ie;ilo;;F;is;i|io;;F;i;iio;;F;i;ii4o;;F;i6;i:i<iBo;;F;ik;iso;;F;i;io;;F;i;io;;F;i;io;;F;i;iio;;F;i;iio;;F;i;io;;F;i,;i3o;;F;i6;i7o;;F;i;io;;F;i;io;;F;i;iiio;;F;i;io;;F;i;io;;F;i;io;;F;i ;i o;;F;i ;i o;;F;i ;i i o;;F;i ;i o;;F;i ;i o;;F;i,;i,i-o;;F;i-;i-o;;F;i*0;i-0o;;F;i.0;i/0o;;F;i0;i0ioo;;F;ip;iro;;F;it;i}io;;F;i;iiii o;;F;i%;i&iĨo;;F;i;io;;F;i&;i-o;;F;iG;iQo;;F;i;iio;;F;i;iiio;;F;i);i.o;;F;i1;i2o;;F;i5;i6iCiLi|io;;F;i;io;;F;i;io;;F;i;iio;;F;i;iiiiiio;;F;i;io;;F;i ;i-o;;F;i;iiio;;F;iv;izo;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i8 ;i: i? o;;F;i ;i io;;F;i8;iFo;;F;i;io;;F;i;io;;F;i;io;;F;i;io;;F;i';i+o;;F;i-;i4iso;;F;i;io;;F;i;io;;F;i/;i1i4o;;F;i6;i7io;;F;i;iii<i>i@iWo;;F;if;ilo;;F;ip;itio;;F;i;iiio;;F;i;io;;F;i;iio;;F;i;io;;F;i;io;;F;i;io;;F;i3;i:i=o;;F;i?;i@iio;;F;i;iio;;F;ij;ijo;;F;i0k;i6ko;;F;io;ioo;;F;i;iieo;;F;ig;iio;;F;in;iro;;F;i{;io;;F;i;io;;F;i;io;;F;iB;iDo;;F;i;io;;F;i;i:regional_indicator[o;;F;i;i:spacingmark[i i; o;;F;i> ;i@ o;;F;iI ;iL o;;F;iN ;iO o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i ;i i o;;F;i> ;i@ i o;;F;i ;i i o;;F;i ;i o;;F;i ;i i@ o;;F;iG ;iH o;;F;iK ;iL i o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;iA ;iD o;;F;i ;i i o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i? ;i@ o;;F;iF ;iH o;;F;iJ ;iL o;;F;i ;i o;;F;i ;i o;;F;i ;i o;;F;i ;i i3io;;F;i>;i?ii1o;;F;i;;i<o;;F;iV;iWiio;;F;i;io;;F;i;io;;F;i#;i&o;;F;i);i+o;;F;i0;i1o;;F;i3;i8o;;F;i;iio;;F;i;iiUiWo;;F;im;irii5i;o;;F;i=;iAo;;F;iC;iDiio;;F;i;iiio;;F;i;iio;;F;i;io;;F;i$;i+o;;F;i4;i5io;;F;i;io;;F;i#;i$i'o;;F;i;io;;F;i;ièo;;F;iR;iSio;;F;i;io;;F;i;io;;F;i;io;;F;i/;i0o;;F;i3;i4iMio;;F;i;iio;;F;i;io;;F;i;io;;F;i;iiiiio;;F;i;io;;F;i;ii,io;;F;i;io;;F;i;io;;F;i,;i.o;;F;i2;i3i5o;;F;i;io;;F;i;ii?o;;F;iA;iDo;;F;iG;iHo;;F;iK;iMo;;F;ib;ico;;F;i;iio;;F;i;iiio;;F;i;io;;F;i;iio;;F;i0;i2o;;F;i;;i<i>io;;F;i;iio;;F;iQo;i~oifim:l[o;;F;i;i_o;;F;i`;i|:v[o;;F;i`;io;;F;i;i:t[o;;F;i;io;;F;i;i:lv[iii8iTipiiiĬiiii4iPiliiiiܭiii0iLihiiiiخiii,iHidiiiiԯii i(iDi`i|iiiаiii$i@i\ixiii̱iii ii>i?i?i@i@iAiAiBiBiCiCiDiDiEiEiFiFiGiGiHiHiIiIiJiJiKiKiLiLiMiMiNiNiOiOiPiPiQiQiRiRiSiSiTiTiUiUiViViWiWiXiXiYiYiZiZi[i[i\i\i]i]i^i^i_i_i`i`iaiaibibicicididieieififigigihihiiiiijijikikililimimininioioipipiqiqiririsisititiuiuiviviwiwixixiyiyizizi{i{i|i|i}i}i~i~iii{i{i|i|i}i}i~i~iiii ii iiii ii& ii ii! iiii0 ii`ii9 iiRii}ii ii ii ii ii" ii ii iiii"!iiaii: iiSii~iixiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiimail-2.8.1/lib/mail/version.rb000066400000000000000000000003511436372131700161540ustar00rootroot00000000000000# frozen_string_literal: true module Mail module VERSION MAJOR = 2 MINOR = 8 PATCH = 1 BUILD = nil STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.') def self.version STRING end end end mail-2.8.1/lib/mail/yaml.rb000066400000000000000000000012171436372131700154330ustar00rootroot00000000000000require 'yaml' module Mail module YAML def self.load(yaml) permitted_classes = [ Symbol, Mail::Body, # Delivery methods as listed in mail/configuration.rb Mail::SMTP, Mail::Sendmail, Mail::Exim, Mail::FileDelivery, Mail::SMTPConnection, Mail::TestMailer, Mail::LoggerDelivery, Mail.delivery_method.class, ] if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') ::YAML.safe_load(yaml, :permitted_classes => permitted_classes) else ::YAML.safe_load(yaml, permitted_classes) end end end end mail-2.8.1/mail.gemspec000066400000000000000000000020311436372131700147360ustar00rootroot00000000000000require './lib/mail/version' Gem::Specification.new do |s| s.name = "mail" s.version = Mail::VERSION::STRING s.author = "Mikel Lindsaar" s.email = "raasdnil@gmail.com" s.homepage = "https://github.com/mikel/mail" s.description = "A really Ruby Mail handler." s.summary = "Mail provides a nice Ruby DSL for making, sending and reading emails." s.license = "MIT" s.extra_rdoc_files = %w[ README.md ] s.rdoc_options << '--exclude' << 'lib/mail/values/unicode_tables.dat' s.required_ruby_version = ">= 2.5" s.add_dependency('mini_mime', '>= 0.1.1') s.add_dependency('net-smtp') s.add_dependency('net-imap') s.add_dependency('net-pop') s.add_development_dependency('bundler', '>= 1.0.3') s.add_development_dependency('rake', '> 0.8.7') s.add_development_dependency('rspec', '~> 3.0') s.add_development_dependency('rspec-benchmark') s.add_development_dependency('rdoc') s.add_development_dependency('rufo') s.files = %w[ README.md MIT-LICENSE ] + Dir.glob("lib/**/*") end mail-2.8.1/spec/000077500000000000000000000000001436372131700134055ustar00rootroot00000000000000mail-2.8.1/spec/environment.rb000066400000000000000000000005721436372131700163020ustar00rootroot00000000000000# frozen_string_literal: true $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) begin require 'byebug' rescue LoadError end require 'mail' if ENV['MBCHARS'] == 'activesupport' require 'active_support' Mail::Multibyte.proxy_class = ActiveSupport::Multibyte::Chars else require 'mail/multibyte/chars' Mail::Multibyte.proxy_class = Mail::Multibyte::Chars end mail-2.8.1/spec/fixtures/000077500000000000000000000000001436372131700152565ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/attachments/000077500000000000000000000000001436372131700175715ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/attachments/basic_email.eml000066400000000000000000000027571436372131700225330ustar00rootroot00000000000000Delivered-To: raasdnil@gmail.com Received: by 10.140.178.13 with SMTP id a13cs354079rvf; Fri, 21 Nov 2008 20:05:05 -0800 (PST) Received: by 10.151.44.15 with SMTP id w15mr2254748ybj.98.1227326704711; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Return-Path: Received: from mail11.tpgi.com.au (mail11.tpgi.com.au [203.12.160.161]) by mx.google.com with ESMTP id 10si5117885gxk.81.2008.11.21.20.05.03; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Received-SPF: neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) client-ip=203.12.160.161; Authentication-Results: mx.google.com; spf=neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) smtp.mail=test@lindsaar.net X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed Received: from [192.0.0.253] (60-241-138-146.static.tpgi.com.au [60.0.0.146]) by mail11.tpgi.com.au (envelope-from test@lindsaar.net) (8.14.3/8.14.3) with ESMTP id mAM44xew022221 for ; Sat, 22 Nov 2008 15:05:01 +1100 Message-Id: <6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net> From: Mikel Lindsaar To: Mikel Lindsaar Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Subject: Testing 123 Date: Sat, 22 Nov 2008 15:04:59 +1100 X-Mailer: Apple Mail (2.929.2) Plain email. Hope it works well! Mikel mail-2.8.1/spec/fixtures/attachments/test.gif000066400000000000000000000072231436372131700212430ustar00rootroot00000000000000GIF89ad2•|ÄbīydŦ[2n1ݩmĵɍlɺl.Ȝҽ}G1ugřU,ѿ©yˠͺ|gq5qLubŤkDnXȶ|XʫҨŭz=&ɱyUYDذ͙cM̵μpv9!sTGVAأ>50ʸҵ֭sIJⱕΣஒv{͒r|A)崙GљzT'ۦ_Hr  L!ܵmZñP:θC94vQ©`8Εuչ⼩H1p\Q;r]|D.נỨ_ԝ~L5vaЦ麠꽤p2 E.侬jG8N8eQU>e>fP`JкbMjT黢xeXBv<&涛|i޶\H߸뾥nz@(nHؽðŇeڲ֞ƴjV蹟uоެhRӾ๦˴L7R;P&NJigAx?(U7+ZDԫc:)ѻJ4r7縝t^\Es8!׮aK~I3ǵ۴I2zB,s6ϖvD+ joZͿĬˏn|N8M7-䳘ЗxF/m/вhS]GҚ{~pخp33(#^A4 S<˹ȧT>㽪~C+\>1ʲʳǯq4u:#ͯM6_K.!Ӝ}p[d<]x;$̑pwcOtOaR[lVјxϽW@u7 x}¯ëī㲗Ӫs_b;!,d2ldY|pN9AG>LdBʒB%JIرBOV(  Ui$hJuC9nl5ssXhV+5BǼ4RpKт!$ 0Qy0H$PJ|qBT6gU y,MI9aNmTڠXSd'LB.Z3nGHxA; < Y;Ĺ4+Qj #F.i;S"fmۨuOСP1Pn#<-gP\ krzX\HёI0HK\\wtSNy@SI yrhB"'Ȁ~57D!ux!@BeFq_4XJ"P-tvThL9SՒ 5!Lf?P[pE*זF a̲c9 elY{M}ZٶD ~"ƭuH|8 "`D5ܡފhzXch IEUU 7B:C -DIxe*&`ÑG\"hb#3N.PJ؈Ru>UՑI "Ļ"Zu#VڅFaʱ faqpѩIenjƙgiwRZ1|gAA!.E\ i>˥QTv]xGj.G ­F'X r3Kě :x8Qihlt-AwJ=PwiՐE~AF99Ð\Er@cLfO?-LQ=f@ާW` *4ZQquݕs[[2؉ jdUz:٪}Zjz֌զ xhZWHA~ G97d:N58ՈO`:س-tU sӀljE2r:T$ SKu;X9a@R4*3$ j8=.HF+Ld$ % oc8AͤaDB>MPh4Ѥ\OQK;Zhl 0c#Ɉliuz5Ump g,0=$ e!fxa0jV3@6de+ԑ` [a ;{]_3P%,+LR`ь:*\!~ůԡsA7ѱQۛKN6)S)01hd86A:+ UC{jŁ@zM  8 0J:v(86JZ܌<+?tk aoTĐuЕ:,(+DRA;⍔ȉa&$? dߠEyv2W ;HC/I9 tB6᧯rzPdDeO^RfA|IRQ1a|5 L>9Po mыr+Ŝb$q "GjЍn0@HGDMEsh*4^?P(J*[!"9zoE D2Z"uP>iH YZ9>s_ GE:?'5XNH<GEsimKEhLưNT[\Weڵ H x;[rI&$/~E NrϧZ R 8bVj{"]Kف JziteH\xp>yh?YjG΂2A'7\*D4n0" b 8PArBs ȉf,>"aw\_4}-0ў ,kB\mhxm 5w۵Cg" MH&Kd4gǤ}eQ35aTbf| /}5a W6Rs&qm6g`E7g"J2hi%r8Ju8ry"QWjC20Di-F p-= |PNeN4j:;Kw|/-;0.a"fF&Zu"4[]a[^p 0w2=xm+s,e~\7n3(ezҁ`oqety^yiR)"WAǃ_vxsB `, B?N*@8C2'l9i }H#u#VBbCWE$`},c]ԄQq~|G?Q]qR]?l'HqwH?Pdw8) opvy>xwSxDJiuh혈y¢rEpaW]{i,bF't6jW/V;/ueOW=|Bdu߂!AA_ֿcڐk^ۘmv&vLG!AvcmeV=>"6 3P=IIvŔB<HHHH8Nm?!Q0p냹u}w\+J)\^4QT(Pӂ& ^?7?7?)kGx=y'S x^SFduqǏ*8RV|xh4D諴iq5A"6h+[%f궭 3Yle9\Q& n^CZ>)9P@ IOB£57NҞl >_=PjӴ!:MSքӿ?!VR.oMC+.$$Ai:;Y WUHF'BL!C++XZd2.Ȇ zR<¥"GU6bkM2c|gaTUB&}OS|y˄MwwT z'nb)wcH}‘wq$nL*A5rJ+ťY?!!"gWÐHR!Fkn>E 2Opm"JeLBb>|?,50~nR_e{H0uАu3S//7{ g;9fY 1?B/CQ:Q.˃#X Chcr1)t O^B`*- Q:q4P'M`'Yc?>HBaīcDnE؄5LK'c"Y(R]F> stream x+TT(TH-JN-()MQ( ()JU5Tp*O endstream endobj 5 0 obj 51 endobj 2 0 obj << /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 100 50] >> endobj 6 0 obj << /ProcSet [ /PDF /ImageB /ImageC /ImageI ] /XObject << /Im1 7 0 R >> >> endobj 7 0 obj << /Length 8 0 R /Type /XObject /Subtype /Image /Width 100 /Height 50 /ColorSpace 9 0 R /Interpolate true /BitsPerComponent 8 /Filter /FlateDecode >> stream x{gTVsnd}nLn `G^Eb{{jA%j4Ğs9ߵև}7 sYO{7kI[&hONe _Uej[~.#CN]Jpq3Nq3R7g>,_jJ;FxzϯW^em? 4o|~Io;Jm)!ڬiK .F] ?ԓl_oUeVv8Pt;n;shSuW]u&ustYi&.hhՂ-5ټ1fs?Ƙk Sf{nY2iViP&lub w߿Ҳ64;jB`p yAwK"Tߐ5EWO_Wp˻_Y`VYuJ/Cm.tE_ó{*VnCJ DgKivo wj 2-u=Qp$@aǷ{pc޵V-Yuy渮Ys)K'j|ap傱aVjchJҬ>X+t]7[[#`uԡ- weJ<>yۤ2v1T?Zl8:p/lݕdבL B)&gm/~:_b˘UkbV4GĠxVW;1+WZ~Ĭ.?;WQgٷm4߭ϹU1R|8r^@vD_ZD3QnaA5K:εޟi'~1[blܣS3hDzm - 6zi˦-hf5g6g /yZ.gt㪯7. ٳ6Na1 'n"Y{rڎr -.=Z-zm]>쏴g5fߝk7e>o Խ܌YayV7zލ^~{ YPl Q;^cޝ[Ui˒_ʋv>5'3 X`]m^~8P Szg6G[{MʠK{n5 DlϳϕjVfsǘ.f;V[؎Ty.'iVaStX_$t}&ǝm N_X]OxWU}ʓ,ՏgK_Ulu P J,׺4`uj2oT]*?#*ާ#C+?*/2y-fJXю=`u%[zo~뚯 /XM^4`J+P}j1 8n4s. ܹ*և =MU`;MG\Sm`弫B@pH7ꛒo ҞXռW`ZCe:˿k+\p`y< 8\;ٗ`M`dWkYiRP,B%ƒonV_/#p9`~>57S:kZ@UtSb G-Xala+,ՙ-𡒟VVܼ @oeqR乞sI4.yTݩz-,+2Pg䴓؂m{"2Q=BϕWVnH >-`V?V BK!- VC*H`feYeZzh U]w$قߖ^-`5tXlj%+b ̬VVL[ڦkU$©FE^ўH61MwZΙ9{XXmmq1<(؂dmҨ~ X:WA`%h@kW+-5<%PHV9`V# VC1C&1[[``RrʌB.* G+ق?Y.`Vj98%5gmP]G+v,{2x? tl!k׬ܽV` kk-v1:t?ҜBBI2wdw@qhC' -` l`UX_X_H Mdtmu[±|{VIVtV` ^` 4X@f @׭ ¡˴ t``5¦~;]kb/Dec[r *CoF}BhV-XmmrWHx-T@$?i͛C*҆O-t҆ͳuO!m[h)d69RIxFb'F;IXG҆$!m[ P!m4&دfQfāMq'xFuXQ˃9Ě* $m =3! Gl!ZPОwݐ6^%iClJ6OzJ-JVH&[f $mV$mj-(t<;J$B8 <2Ҝ[ 0acL[`i8`MքvK|b{sc mҶ3X-(>BH;!m <nNF|Hb ?4f[X-4vE6 ` ׺ryu!m-ܭ([HaXh[-K{-O<l!"_Z@I8I`0+h@dict2Ky~ mjqܼ} -`츳OHDi-Ҧ5W fzE{usXv'0oΞٶ3l!pdۿԿ)*jc`@\ڪStBO(K V` seZb ` 6Ɛ6W m2oS J`[Z٤8Dcg$8?!͊<ނ|thE1Ȳ?Zgt\ޙ\6;[x_hq is{Ս,;!ߔX5?k+tM O O ?KC6E+.5&9&)JxCqwag^[Nsc]uEM$m#]l6̶\={AMu!mL.8fމsu2BiBZmmtoss\0Kx-XڒS+f ̬.](~H#JltҬ!pG6BFE":I`z 2p;Px N+2X]%m>ň y eiBFaBڤYw?]ڙ6Pvl!k7|`%CM mr"Hڴ-lk!m[~X{:&|eV0+670[XW6Sl:=eaf;a֩Px )r\Fx l eaگ ic:քS2l{[G{dG_ʺQi#6Z5,m҆P_=Ht6[|w#kI mf%lϕd6ܩ˹]E|6`V6]qlOd4ޓJF,m i0_> ð}O̰ YڬKfm4P=X2xsqWtbs+[0@ҦMHod}6+!m~HFZt!-# %-7fQ0$mőɌ`@3>WyN'-1) ~6BwbmlA5+%`i`&K'6` C-lO$iSi_| Y--EjiSKF(K.3[eiCM㖬dLJaY]&72Z̊RU$"#TH2B};cAs=aڤ@Ȏ&P6~>#w$="a |^@6$m=oeic5_, 6CPx RjFhnHb 0B%i;Ts`;PNmWXmf#t7B/Ka-pjB3}/aoaF/Y Hm$#ԭ)̩tޔ/uW1Jef RH, %jZFJNmD5J` Ej3E6d9lfidߚipnoC]0B -)9ɩ ؂^aRĦ iSv_2B3M%Ou(PĦ+!m4s|r>%X2B#]Yڀ-ܶjU?jVlRl}ޛ)6=+%Vdgw]*#TKHa6rjs PHכK_h||VdZk#i'P6 lRjނ0B1-SRNm[uDl::ix~VbS\/ai> 1rjs/>U&fdR0Uð`f椿IPS|If ^(<% C0BWPM#4**}(bPK2B)!inxhJ%i/4vGjQ"`5Q6B9ai[+v",m|IXu ؂`EǃLceVon} `^լ1]2B4:Rjl_o*s;U$PĦD(f5}8l|._fd#ZCĦdSjqxH&Mk O= KĦaDxTCb d֧>HM?HmxV2e" l~ʹSt<--[ ŦxPl6?"y 41oYZ@t<&~,ig+Jð`5{Pt<`RǣǢ!Mu6wOǬڀ-TCu[8x6F!:60BEC%m(6}9P+R;}"6Z@«uJjs9_x@(@j_crq:>6a1?Y!b&fHf%` l iC6i?_is7^޾(bSx8 @ u2+q0/' {XVu3'lKV+'*f%ͽPb ڬ룳 P6hDj;\5g#ĬXڸR! ~t<86%i#T6-tAxH-GZ@{ʹRu|Q?j$X$߿Fc΄6bJ soY $mBu bS6ԆN96$m/m(wbV&(`Bک~6e#MYڠo1(%+U!#faZ8!@P&7BύPE4-P! lAxXQ!Mx[XGR#Cn::*6nN'FgҦ#-t,uĬ=AF(6#4B[rwx:I\((J|1<+ĦĬP35B!mBJڐ ix4PlB:' QHS(66FhMV,mܤFTĦh"b la֘bt<"R#2BYTejb` bVK*!NFmĦ,moLPt<@׹AlAŹJ٫r{}-pǣ>bzH̑ a[`oR60)u9Nl u<)&B8iN,0hUH2P@lJlGg) iRR8߳quy0B]l/䎇(-Pǃ؂l iCP&u<:>dCF1S!Mxؔ:hJ҆Ҹ1ĦQ4Bc`D# i &ۢ=y} -sǃvtMzYJmT҆|6xh0MV\HSX'5Bs:V6^!Q_'iiAeCwOvPu*H- iCl:d"PxPlF(U_Y:- { +^@-BZ+HmHP{ w<҂)QI`2uxBZ讕 Ә=Ҩ!׹#Pu0+x'm6W~i#1+6T_7:t"biS' ŦD*Uނ( JVMeG#,mrp#4@}ǜ VHA}`%[߶H->T{VCP2BI@CoE 0BeiIb2B{^ޒP] `%u ^k5Bl4>஍ VDlJ`%W؂bRj$XH0B!m-ܡԦ,mY*` _p#T`‡kC4JHh]6R!X6BE}]6BVdR#̊ wb *Ŧh2[u6Hwm-H`%Ԇ]JmPAx(҆Л* 4_Y$8e\;WrlJYڌAы#f" ݵͬDl #btSǃum z H(k$F+\v6n6ie| T_w;]ҙG*P6WE w< iBڷRj:eb H' _vnrA`Y$de7)6ein6\_T]FFFwmlj )fCة&.C[╎GgnmQ&։:XnJjHwm-T;\FV2]2Y :5B[nG^h@+׹A:FV+ĦۗS%30F(1+Uǃ+0 +l GP_7r@};yx݁ isF{__ endstream endobj 8 0 obj 9261 endobj 10 0 obj << /Length 11 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream xMHaї$T& R+SeL b}wg-E"u.VDNC:DuE^";cT03y|URcE4`λޘvztLUF\)s:k-iYj6|vP4*wd>,y vڴ=S԰79 ڸ@`ӋmvUl5`P=Gj)kP*}6~^/~.~a2 nײ0%f|U 9l7?j`l7"tiNf]?uhgM Zʲ4i[&LY_x {xO$̥߬S]%֧&7g̞>r=g8`候 8rʶ<dWT'<eL~.u"A=9뗚]>313X3-$e}u,gmg664$ыEzL*LZ_j_]Xy[?Xs N/ ]|msϚƫk_WfȸA2)oz-di2|m٣j|5ԥej8ɮeE7[Q|IM%ײxf)|6\ k`Ҳ䍐.> endobj 12 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 1 0 obj << /Producer (Mac OS X 10.5.8 Quartz PDFContext) /CreationDate (D:20090827222429Z00'00') /ModDate (D:20090827222429Z00'00') >> endobj xref 0 13 0000000000 65535 f 0000010904 00000 n 0000000165 00000 n 0000010772 00000 n 0000000022 00000 n 0000000147 00000 n 0000000268 00000 n 0000000357 00000 n 0000009801 00000 n 0000010736 00000 n 0000009821 00000 n 0000010716 00000 n 0000010854 00000 n trailer << /Size 13 /Root 12 0 R /Info 1 0 R /ID [ <7af05eb605c91127cf4f015fea4d9646> <7af05eb605c91127cf4f015fea4d9646> ] >> startxref 11046 %%EOF mail-2.8.1/spec/fixtures/attachments/test.png000066400000000000000000000154561436372131700212710ustar00rootroot00000000000000PNG  IHDRd2RPtEXtSoftwareAdobe ImageReadyqe<IDATx N0&q8IiIBQH# O/BFΈJK۱?n:A܌[tϢ!d9|4^]Ƅ2&uT( 2p8e;,p̍fppsw~)x~1|e&I[%,@=w]Hsm~zahx)8[b:cS}v*dhUH΁Bm'eUQͶ0<#4UY2TRZΧK0/*i*XK0r}|œǏ g9yY94r 0N>7 >$Okb=0'N^` |9ϟ@߿ONׯf 3v.,ԅM@v-.r/ KET_?# ( R.F`P@0ZAA**&.'dri0N\Ғ" H OЉaCbcbE 4RN=Xb|? γY2/&29[XR Bmݖ%m6bWDV(2LqˆE1 TrOL0\}Tx JȺ5'B&i:e}I!QQ߿]t0pFPafmBpAC5De d`9nNky},L0$LŽCWjZیRJV w۬oBOOu( :&s e&}˶!rm0(8XQpZ!\1Ŏ_rJ UBdl" y #2j) X'[86}/xWGMnTU9Z@X@#R@Vܦzu׃G>|u&%L(L^`v\|2"߾INƔ  ȴM;f+Eʼnw]Y ԉ7N]YH\B )]D2( p:L e:||7^G.CWO?ʛe4{E5:,~b]QJ1P[‹4u{$MO*qIVY>(ֵD@2cĬUI>E' Y.iYhk̲)$F&A׃h;ɊጝbH^NcJ^A 5&˘ccYM#*ߐe3(pV=>*X`Y($FD!v +S QP6"~ /`e)($̛sdCv6ys߹ p`.alz3!J -9ꁔZsUֵ\WWE.T|qPIW7V=mA? # pLTd"%yU9d%(fa,9\]*KV͖Hǂq7P 뇸!褬bX=jNA&_E#c]T>Z{C8{VBT!—b 8eXtQF$!ly8CR(gp|Xo%NUoybd:~ՓV8*ΜE0i^h Tac(̊Ra>z\j+`أn?|H.}Ċ2k86``NHbq/Q3K)4QL*؀I #c_Hlk1:Wq 6W,',)#H}4)|` koe:5{7߿{__wNrXj!s((em bKt!֤6)YyT*q|>F<5R؜aIk¤~tpXh\[6Ke)#AAqqC6ٛw/o7w@)"<Rb鎤vɡ9k4 tM Q:"*oL4<1 r#6#WǥrHj'~1!pgzj:;wrwxYYwG($_L3Y}DQv~LPe9,pA(RK#.}}Ov2]4nuuǪOUMdft'zas!-+8Ҕdز9(ݳ;7Y! IʹӃ`XOm" l<筭[˪AeE *Lt}‚BS]6g*c0TIN3}!8IzdH)RD e\SK~)<̜@kV#iJ\"QbOIRnDܚGVUé&HX8npʼb*@yM{4mzW,J4#V#`Ε`C""H oBEg\Z/g]`{0w7Pz ػRV@Pmw0;jpQ|cc<g0_x`iMg! +)w35صJ8ԋhAH9=i+U/@ ৿.: Z% -nSr(2N87#itVY  &>x+ 0'Vs=<,=d3̈X oɞzPK~3+w޼wB&5#^,'r4ypfY vv L;첀:vG+bXbKWi>[\.M/s~ n㺛uy}Ab.e3KVC1_ɴn5%%:^&Za3HbUymV^A rhU\JT7J *ŻFkw[Q\ٙI+W՘<51,lAqߵcZj2eDu㡴$0C+􅬚I%a>EJp, G(SvRr|܇U(P%"V{.]ˉtT7f0s# \(ؾ*RWW]S;|v>y,w{;R<-ZҠ_7PK*?ϳsޚQǙN6K&M#S43eDT`YQ_"(EQbea@A$nNeh Xu={Zgx_>wֺd_ಶXi 0VH'cV;Mi{",k-%>ExL &fxϼz`{p6Qe&t7ǕDzÕJ< 5LQ7saa2]dyWAUQY}i8Y]6BpéhXl,$f !Jc8*23BR)#~_Rܮ঳k"]Ao J9j)*9rj=lC}abF/P!!iF{`l"hqLg;|*m7cӦRa1U#Ps -/j/~s$ک~z^x$ {V6m۸K-OtR7?[}b/oa Z7r(qS2 {kA 2Q:tNC&_Jd{T:n??udfa;'}]zd=kN~ǎCnMOulM__>:*l d;HEK/O?'V|h=Kc0Ú,Rue]!c&{zE)'(ϟ,9A+NTU>.2ϧLLИ%;}# ϞS_c`qJm {8a-c-Ӏiw0z6-MZDdmi67ZB,uJ=g|AdH7 f;Sxˋņ@4+X#e oSz dڪd>2&HFoWQ"A ]Fφd$Sh.*K/h{G9A~z [{>t/ش1AS~qط'9/gʫW{/KWhL@XLpu-l[xf #U+jcAN6pLu-ageFtYSG%(*c6M [7^~텡mҹ\N=rPE]o֧layVP=_R!o%ZQg b>Z /Yҍi \uKˋKKK 4[Z7Nڮ ¤C9vhVQ swL3u1ŴRj, X{iRaX/J&x;#v9!t6r4p3o1n0n/l.m.l.m/o3r7 w='|D.M6V@_JjUtaFFIL!P%T+Y/^5cQ:M6J3F/~C+|@(z=%w:#u8 s6q4p2o1n/m/l.l.l.m0p4t9!x?)~G1O9XCbNmYwdFFJM"Q&V+Y1_7e=jDpJvR|YƒaNJhːoЖvԝ~٣ݪᯔ嵛麡ĬɱͶлӾнλ˹ɷƴð濭㼪߹ݵڲ֮өϦ̡ȝĘ{xrn~izdu_p[lVgRdM`I[EWAS=P9K5I2F.}B+{?'y=%w:"u7 s6q4p2o1n0m/l.l.m.n1p5u:$zA*I2Q<[EeQp\{hFGK N#R(V-\2`8f?lErLxT~[Äbȋj̒rјx֟ڥޫⱕ淜꼢ƭʳθѼԿѿϽͻ˹ȶƳ°忭⻪߸ܴذխҩϥˠȜė{vqm}hxct^oZkUgQbM^HZCV@S;N8K4H0E-|A)z?'x<$v9"t7r5q3p2o1m0m.l.l.m/o2r7u<%{C-K5T?^IhSr_lFHK O%S)W.\4b;hAnGsNzU]Ňeɍl͓sҚ{סۦଐ㲗縞뾤êǯ˴ιҼѿν̺ʸǵŲ侫Ứ޷۳دԫҨͤʟǛÖ~yupk|fwbr]nXiTePaK]GYCU>Q:N7J3G/C,|A)z=&w;#u8!s6r4p2o1n0m/m.l.l.m0o3r8!w>'}E/M7WB`LkWubrFIM"P&U+Y0^6cP9M5I2F.~C+{?(y=%w:#u8 s6q3p2n1n0m/l/l.l.n1p4t:"y@)H1P:ZDcOmZyevGJM#R'U,Z2_8e=jDpKwR~YƒaNJȋpјx՞٤ݪⰕ嵛黢ŭʲͷѻӾнμ̹ɶƳñ⼪๦ݵٱ֮ҩХ̡ȝŘ{wrm~iydu_p[lVgQcM_H[EW@S'w<#v9!t7r5p3p2n0m0m.l.l.m/o2r7 w<&|D.L6U?_JiTt`nIL O%T*X/]4b;hAnHtO{V^ňeʎmΕtӛ{סۨ୑䳘踞뾥êǰ˴ϹҼоϼ̺ʸǵIJ侫Ứ޷۳ׯԫѧͣʟƚÕ}yuok{fvbr]mXiSdOaK\FXBT>Q:N7J2F/C+{@)z=&w;#u8!s6q5p3o1n/m/l.l.l/m0o3s8!x>(}F/O8XBaMlXvdsIM"Q&U+Z1^6d=jCoJvQ|Xƒ`ƉgːnЖvԜ}٣ݩᯓ嵚麠ĬɱͶкӾоμ̺ɷǴñ㼪๦ݶڲ֮ӪЦ̢ɝř•|wrn~izev`q\mWhSdN`I[EXBS=O9M6I2F.}C+{@(x<%w:"u7s5r4p2n1m0m/l.l.m/n1p5t:#zA*H2Q;ZEdOo[zgxJM#R(V,[2`8f>lEqKxS~[Äbȋj̑pїx֟ڥޫⰕ涛껢ƭʳηѻԾҿϽͻ˹ȶų°忭⼩߸ܴٱ֭ҩΤˠȝĘ{vqm}hyct_pZkVgQcM_HZDW@R]HgSr^l}ŸK O$S)W/\3b:gAmFsNzV\ņdȍkΓsљzנڦ߬㲖縞뽣ªǯ˴ϸѽѿϽͺʸȵij¯侬Ứ޸۳ذիҨΣʟǛ×yupk{gxbs]nYjTfPbK]GYCU>R;N7J3F0C-|A)z>&w<#u9!s6r4p3o1n0m/l.l.l.m0o3r8 w>'|D.M7VA`KjVuaqťL!P%T*Y0]6c;hBnIuPzW^ƈfʎnΕuӜ}עܧஒ䴙蹠쾥ëȰ˵Ϲӽоϼ͹ʷƴı㽪ຨ޶ڲخԫѦ͢ɟƙ•}xtojzfvaq\mWiSeO`J\FXBT>Q:M5I2F/~C+|@(y=&w;#u8 s5r4p2o1n/m/m.l.l.m0p4s9"x?)~G0O:XCcMmYxeuɩM"Q'U,Z1_7e=kDpKwR}YÃaNJhːoЖwԝ٣ݩⰔ嶛黡ŭɲͶѺӾҿнͻ˹ɷƴñ⽪๦ܶٱ֮Ҫϥ̢ɝř|wsm~iydu`p[lWhRcM_I[EW@S^IhTs`máϱO$S*X.]4b;h@nHtOzV]ŇdɍlΔtӚ{נۧ୐㲘縞뽤μ@62oYOͣʟƚÖue*fOaKQ$n0n/m.l.l.m0p4s8 w>'|E0N8VBaLkVvcrǦҵP&T+Y1^6c1dN`JlC3jA0g=-d;*b8(`6% Y-W+V)T(S%R%h.n0m/l.l.l/n0p5t:"y@)G1P:YEcOn[yfwʪչQ'U,[1`8e>jDqKwS}ZƒbNJȋpїx՞٤ݪⰕ涜鼢ŭɲͷѻӾC94ѿоͻ@61°⼩߸ݵٱ֭өХˡȜĘM;3l[m~hydt_pZkVhRcM^IZDW@S=P8K4H1" y<$w9"u7r5q3p1n0m/l/m.m.l/n2q6u;${B,J3S=]HfRq]~j|ͮؼS)W-\4a9g@mFrMyU\ĆcȌk͒rҙzןڥ߬㲖淝꼤©ƯʴϸҼԿC94ҾϽͻ@61¯俬ứ߸۴ٰխҨΣˠǛė%pl|gxbs^oYjUfPaL^HZDU?R;N7J3H0" x;$v9!s6r4q3o1o0m/m.l.l.m0o3r7 v=&|D-L6V@_KiUtaoģвT*Y/^5c;hBoHtOzW^ňeʎlΔtӛ|סۧ߮䳘蹟뾥ëȰ̵ϹҼC:4оϼ̺?61㾫໨ݶ۲׮ԫѧͣʟƚ–1%ojzfwar]nXiSeOaK\FYBU>Q:M6J2F/" w;#u8 s6r4p2o1n0m/m.l.l/m0p4s8!x?(}F0O8XCbNlXwctǧӶõU,Z0_7d]HgSs_l}ΰپ˻X/]4b:gAmGtNyV\ĆdɍlΓsҚ{נۦ߬䲗縞꽤©ǯ˴θѼԿC:5Ѿϼͺʸ?50俬⻨߷۴ذիѨͣʠǛ×~r% Z?4kXnYjTfOaL^GZBU>R;M7J3F/~D,! u8!t6r4q2o1n0n/l/l.l.m0o3r7 w='|E/M7WA`LkVubqťѴ³οY0^5c;iBoIuP{W_ňfʎnϕuӜ}آܨஒ崙躠쿥ëȱ̵йҽC:5оμ̹ʷ?50ɞƚ•}yl0# K3)aMdN`J\FXAT>Q:L6I2F/~B+! u8 s6q4p3o1n/m/m.l.m.n1p4t9#x?)~G1P:YDcNmYxevɩոŶ¥Z2_8e>jDpKwR}Y„`NJh̑pЗw՝٣ݪᰕ嵛黡ŭɲͷлӾC:5ҿнλ˹ɶ>50ȜŘ{wsmhL? \50⻩߸۴ذ֬ѨΤˠțėzvql}hxczTE+Y8+ZCV?R4/Ứ޷۳ׯԬѨΣʟƚ–~yupk|fwar]nY_@2}M:U>Q:N7J3G0~C,|@)! t6r4q2o1m0m/l/l.l.m0p3s8!w>'}E0N8WBbMlXvcrǦҶóʩ_6d4/๧ݶڲ׮ӪЦ̢ɝř}xsn~izev`q\lWiSR5*M/#S=P:M5I1F/~B+{@(  r6q4p2o1n/m/l.l.l.n1p5t:#yA*~H1Q;ZEdOo[yfwʫչƷ̩`8e>kEqKxR~Z„bNji̒qЗx՞٤ު᱕涜鼢ŭɲͷѻӿC:5ҿϾλ˸ȶŴ>4/߹ܴٱ֭ҩϥ̠ȝĘ{vqm}iyct_oZlVgQ\G&S'  r5q3p1o0m/l/l.l.m/n2r6u<%{C,J5R=\HfSq^~j|ͮؽɻͪa9g@mGsMxU\ĆdɌlΓrҚz֠ۦ߬㲖緝뽤ªƯ˴θѼԿC95ѿϼ̻ʸȵij>4/޷۴ذլѨΣʠǜ×zupk|gwcs^oYjUfPbK&Q;N8J4G0D,|@)z>&  r4p3o1n0m/m.l.l.m/o3r8 v=&|D.L7V@_KjUtaoģгͿͫb;iBoHuP{W^ƇfʎmΕuӛ|ءܨ୒䳙蹟쾥ëȰ̵ϹҽC:5Ѿϼ̺ʷǴIJ=3/޶۳ׯԫЧͣʞƚ•}xspj{evaq\mXiTeOxM;A(P:M6J2G/~C,{@(z=%  r4p2o1m/m/m/l.l.n1p4s9"x?(}F0O9XCbNmYwdtȨӶĵ̭e=jDpJwQ}Yƒ`ƉhːoϖwԜ~أݪᯔ嵚黡ŭɲͶкӽC95оμ̺ɷƴñ=3.ݶڲ׭ӪЦ̢ɝŘ|wrwWI~izdu`p[mVhR]IpB1P8L5H1E.}B+{?(y<% r4p2o0n0m.l.l.l/n1p5u:#yA*I2R<[FeQp\{hyˬֺȹͭf>kFrLwS[Åbȋj͒qљy՞ڥޫⱖ涜꼣ŮɳηѻӾC94ѿнͻ˸ȶų°=3.wtp{nxkugrdo`vf{v|i O8/dE9xQBuN>S7+ B(S'x;$ q3o1n0n/l/l.l.m/n2q7v<&{C-K6S?]HhSr^l~áϰٿ˼ͮhAmGtOzU]ĆdɍlΓsӚzנۦ߭㲗縞뽤©ǯ˴ϸҼԿB94ѿϼ̻ʸȵIJ¯=3.3'"yuaRD*U>Q:N6J3G/C,|@)y>&x;$ p2o1n0m/m.l.l.m0p3s8 w>'|E.N7WAaLjVvbrŤҴóοͰiBoIuP|W_ƈgˏnϖvԜ}آܩஒ䴙躠쿦ìȱ̵ϹҽC94оμ˺ʷƴñ=3.3&!xton\\A6- F-#vJ8XAT>P:L6I2F.~C+|@(y=%w;# p2n1m0m/l.l.l/m1p5t9"x@)~G1O:YDdNnYxevɪոƶͱkDpKwS}YƒaNJiˑpЗxԝ٤ުⰕ嵛껢ŭʲͷѻӾҿнͼ˹ɶŴð忭㼪߹ܵٱ֭ҩϥˡȜŘ{vrn}iydu_q[lVgQcM_IZEV@S=O8K5H1E.}A*{?'y=$v:!t7s5q3o2o1n0m/m.l.m/n2q5u;$zB+J4S=\GfQq]|i{ͮ׼ɺͲlFsMyT\ącȌk͒rљy֟ڦ߬㲖渝꼤¨ǮʴθѻԿѾнͺ˸ȵų°忬⻩߸ܴذլѨΤˠǛėzuql|hxcs^oYjUgQbK]GYCU?R;N7K4G0D-}@)z>&x;$u9!t6s5p3o2n0m/l/m.l.m/n2r6 v<&|D.L7U?^JiTt`oâϲڿ̽ͳnHtOzV]ŇeɍlΔtҚ|סۧ୑䳘繞쾥êǰ̵ϹҽѾϽͺʷǴIJ侬Ẩ޷۳װԫѧͣɞƚÖ~xtok{fvar]nYiSeOaK\FXBU>Q:N6J2F/~C,|@)y>%x;#v8!t6q4q2o1n0m/l/l.l/m0o3s8"x?(}F0N9WBaMlXwdrƧҶõʹoJvQ|Xƒ_ƈgʏoϖvԜ}أݩᯓ嵚軠쿧Ĭȱ̵кӾоμ̹ɶƴð㽪๦ݵڲ֮ӪЦ̢ȝř|xsn~jzeu`q\mWhScN`I\EXAS=P9M5I1E.~B+{?(y=%w:"t8 s5r3o2o1m/m.m/l.l.n1p5u:#yA*~H2Q;ZEdPo[zgxʫֺǸ͵qLxS~[ÅbNjȋpїx՞ڥޫⰕ巜꼢ŮʲͷлӾҿϽλ˸ɶƳð忭⼩߹ݴٱ֭ҩΥˠȜĘ{wrm}hyct_pZkUgQcL^HZDV@R'y<$v:!t7s5q4p1o1m/m/l.l.m/n2q6u<%zC,J4S>\HgSr^~k}ŸͯؾʻͶsNyU\Ćdȍk͓sљ{֠ۦ߬㲖縞뽤ªǯ˴θѼԿѿϽ̺ʸȵŲ¯侬Ứ߷۴ذլѨΣ˟ƛėzuql{gwcs]nYjTePbK]GYCV>R;N7J4G/D,|A)z=&x<#v9 s6r4q3o2n0m/m.l.l/m0o3s8 w=&|E.M7V@`JjVuapģѳͿ͸tP{W_ƈfʎnϕuӛ|עܨஒ䴙蹟쿦ëȱ̵ϹҽѾμ̹ʷƴIJ佫ຨݶ۳دԪѧ͢ɞƚ•}xtoj{fvar]mWiSeO`J\FXBU=Q:M6I3F.~B+{@)y=&w:#u8 s6r4p3o1n0l/m.l.l/m1p3s9"x?(}F0O9XCbNmXxeuȨԷŵ͹wQ|Yƒ`ljh̐oЗwԝ٣ݩᯔ嶚黡ŭɲͶлӾҿоμ̹ɶƳð㽪๦ݵڱ֭ӪХ̡ȝř|wrn~iyeu`p[lWgRcN_I[EW@S&x<$v9!t7r5q3p1n0m/m.l.l.l0n2q7 u=&{C-L5T?]IhTs_m~¡αڿ˼ͼzU]ĆdɎm͔tӚ{נۧ߭䲘縞뾤ªǰ˵ιҽտѿμͺʸǵŲ侬Ứ޷ڳׯիѨͣʟƛÖ~ytok{gvbs]nYiTeOaK]GYBU>Q;M7J3F0D,|A)z=&x;#v8!s6r4q3o1n0m/m/l.l.m0p3s8!w>'|E/M8WAaLkWvcrƦҵ³ͽ|X_ƈgʏnϕuԜ}أܨᯓ崙麟뾦īȱ͵йӽоμ̺ɷƴı㽫๧ݶڲ׮ӪЦ̢ɞƙ|xsn~jzeu`q\lWhRdO`I\EXBT>P:L5I2F/~C+|@(y=%w;#u8 s6q4p2o1n0m.m.l.m/n1p4t:#x?)~G1P:YEcOnZyfwɪոƷ;}YÄaNJiˑpИw՞٥ݪⱔ涛鼡ŭɳͷѺӾѿоλ̹ɶƴð忭⼩߹ܵٱ֭ҩХˡȝŘ|wrm}hydu_p[kVgQcM_H[EWAR=O8L5H1E.}B*{?'y<%v:"u7 s5q3o2n0n/m/l.l.l/n2q6u;$zB,I4S=\GgRq]}j{ͮؽɺͿ[ĆdȌk͒rљz֟ڦެ㱖緝꽣©Ʈ˴θѻԿҾϽͻʸǵų侬⻩߷۴ذլҨΤʠǛė~zvpl|gwcs^oYkUfPbK]GZCU?R;N8J4G0D,}A*z>&x<$v8!t6r5q2o2n0m/m/l.l.l/o2r7 w=&|D-L7V@_JiUtaoãв;^ŇeɎmΔtӛ|סܧ୑䳘蹞뾤ëȰ˵ϹҼѾϽ̺ɸǴIJ侫ຨ޶ڳدԫЦͣɟƚ•}xtok{fvar]mXiTdN`K]GYBT>P;M6J3G/~C,|@)y=&w;#u9 s6r4p2o1m0m/m.l.l.m0o4s9"x?(}F0N9XBbMlYwdtǦӶĵd2;Z:;`;h(S;pHHmail-2.8.1/spec/fixtures/attachments/test.zip000066400000000000000000000260141436372131700212770ustar00rootroot00000000000000PKC;test.pdfUX JJz <7#c CƖu%K2YƖe0 F!٢,CXD`LBB)ޞ=Μ\:\iLUI]oq{qޗ~v 4ӟ]O|Kj$[GOc @ C !<{=89LVz 3ll\ް}?乙m8[1>n暪PC+2Ͽ!@T/l1Aa!^P(/qP >o"(TUT*nom!A^vhbU;"~Al<1^* *T [ֿͩJva?)*;bCM1X_?pA!v^St(!$ XB |pPࡑgGڣ){ޟffp61dձzGW~bݟumXpֵF%crA Jfnwo_Ĺ9`PԞER y|Y~v_=rLYgo 9v2ll'0yr!;t&1 ͻ{3>C& Z>-ڕD: vƿEEBO6y>r7w~ܜh䯩OG_ Qp+ 1g1$eSǗ6˃{okCjD?wA>o;u?YP6+"4?mr#| ]ھhKr,&ޱq9h?fvS cؒQA}@ 82؋:e MuR[ݯAЎm]+(ŋ ջ%/?ˉZi\ 7iWW0jp rVkuAU!ö>oL.!V_uZYfƛ|gփ]rNKoW~t}Ck",8{0^Ai]:tqZ(չKK'W'x.\ vz(XBm2S تq"Ƶ db]jZ?7~泫XC_V µ*MIm\ Upi?c,:PXsIS5.*q5fe?tpEI x0Hk#ϙK Kv('J?:֞sϠ:uC"cs c'oZ9t ᾅhHMKŷl~&.nteG]zz%jA$CɌ{L 5MjL5W(4v} ?Y:oKRm3Hwt{Z⣵Ute'kE .eK&duH7ƭNlKrWRЕ֬5I*`E/v<De WisCYasNs6^gŐ01 u(t_n=οRҾ?sk-lXx;.8`mWYrcN4o b[>*`*x<}F&h>&&ZCB3^@ Xчj?}RAiY}@ C1NC?4-k?{Z%EgiٗVf5kbD wXDjE;\ZTfCKJ9P 5ﲦjN3,34ZT S~9˶bPUࠜiztbu++^,SB^?BMS=1ȪXJiePI-CG'y[YlxqժK:(^?KM|kǽuX\ +p%|ϲ8=?/'^:CCL, i0so!A$M=D?''M<M4Zpҏb@;B~¿(@36USO1gAB$|WOTuMeuAPжC:{f J=򬠶3 3qwbjШA"#SqD\M6}q֗dz\)ʔfFO5~-)/Cr e_@gpY4a0[KL.I&}Qk e-Sa͌MQ']}@RxV,KѵKܤ!MI_Ԛ&ȍu^oevEc^N%b-bU+82 ;De ::]q<NMej]>_Mo9>e2B;H,ҭ+bczd5S"Nb~0+"SdxF 2M/ߕpw1k[Yת(~z5ԬWu A7s/NsxT.F<#zam /w*:;m'[*!JC,5erw|&Nnexxv -gk:ЦoVh3a1F$l)lckkR fvr6R4 =)}؅v}n i_dlg4~S[D9N6S!*͵?K}ZnmZGhLvsfe|^%hx;3$n8%udMr/УFt Smv#H¦Cs"]o4tY}C_0W~!5қW+PmLy$'JÀ1/566GkV[p+r%:O}zay'#)ܣbЂ^7 k$ZR|ۏk߻$C\JE6z0~ik N+i?K͸5|_o8Yΰz1vZfBLQJτ~x+ZvϚ}UsʉM24bEЩ.x7tߠ# .WTVTaR#oGZRllZ0 Ň%zma\}'^{DzT$=t-Wgd  {* 9p^ۧ*|N,.Q ~!.iDhcPs\S.1N y.HOl.ZzuǧḏGRDxq<_Ĉ*ˆh&{3d QonY,7ID|\b]Xw"lPS`ʆ3]{oC,,cN|1kiv_ђ} {s }ȀCSrsK^`09Lo.Zkd _;}Wyg´'cJ2D9-/l9"qvsODW\n~OeI6qJ~}z3y~7CE 4vn6@SW %_9'SIQ-WNړkpD'}+iM44B,} "G`8) 6oֽ8q7Ng֦4 L .UPw}W[o/N,88;lQȪZ$}t[buN I{skM"ZK/ /n⣧UMy%6pv/9sv.hDjJ^ޭ;B4Z o',!ŭ_x/:$kM[+ .&y W9K 񷓅U]?peKj5^^u wȦ=)BϳV+'$⵩WbsH"O>՗h@/t)|j]=Q%h [ 6xa VA\> #IТ! `l_}-Z#k`,Sy59/ s$p5)a.O9{adKḞbQJo4XÛ<Ѵ9G&MMIpD| `oasm3vSA`r^Ts/=nBn-쮆P[C~Ga : UʟbQ!NjI7agz,x?<0ρ_(\-#:7%i(Wx-= f@y'6UK[=~CC;2D wʔΤKd v&xQ@?\ W.Bf9*VgiF\B xXD=TVHYj* 3VO7ؖ)7v D>ʂN][au {1cz9 ҏcyڵBf8D kD-O‡g 'kyo=J-Ho=ak`95 |?kmi*u͕yi3; Fw"yҞ $%:f~Y,͉zKF~POZ  -[|GB_LG3$ c9-6kE@s 5D5sr Y>TA*bɧyYy8"|r旮=`񖤺Uy'7 _Z8\I+ ݮN}<&O#=AމS D!ֆqQL; Qn;AO-,Fq|V1Kޜf(qDETrN^S%1(T/H a2 Zs:$m*hɕapHu@^)g0Oj9Q WAKeтҐ% D[d.FOjXr߈0ˊ0"ewWRo:b7R԰Xs l8oL ['}̯H.EpXcQVl36mНzoŹ.YOOPѡvސwo )Z8_=^C@Xd96Zs) KtjEqCc HRxas" E[vB^g W*kHzG⠳ޫLjNWR*+NiLzt!H#kk+}69M=)Ivx 2;ƥтAOEWXe$GЖ✢TQEDѬΙBθJψ.[,vp:<~en'n˶^zqD%vl.^MA$'Tw125Fu7H9Gv]o*njo`W^WҬ |8,y'Q9W!4T*Rz,=oN3PSB 6ߨa2qqV}yR48{^&TLVTH<]ꖟ./ IDorAO.="iOJNOVg~0q19n3%F]M:Tn3Ćl%*Z3_{ 3._ +9?*gc$2p8=Hdj2)\{I /^@B &_YcyoLTIaʯ}m eNV©[lV$5!w~Fe߶_ȕ}e%P &g)U"x5x%=ʎ`BX 輹I`B 'Z32}U~$NHN߃q>k'e; yD[ LAWtP-~WSk Y+r'tm칊]*~Y;jȗ[F8K\_9vB[|KOî pq&>dȒ`ȁZ<.88 1x쾈u^m˭]UBx$/F:dd3_=,yE|N$7"Jy'Mąld"T [ 'ϩkyT/VcBc|Ԝ1ZzlTgdas\yw7VEhݵt%V׶ɞX;PMOeIG9Tk 9̳w">&=XRw 8QbHjvtakusb.XVe ;f_Ɍjd3F!,FAߺ8UlBěKjȋs9Havtr֙ٞm7H]$|:dNOs)s|MR̜gzrp?n{77̛aD0[y'DV;c7=BKl!YIa 6р7p\" [%YnE7ZCAW$ Q$6 d/wt̳D]pO胕gdBŧoiʹXBx@y{Ygzӷ,a6tДfG[Ɂ,ҎLx[&)'sH[ϸf˨U <^wh`I{ktⓔގ$|˖yfpm:npHim% pO1b9D5W0؄9y8--NO& ,Sȁ#;; ?FN$g)Ђ$ wg8o!8[ok83>%~y]'^ǛZJy"9au [5|gG+Z)13& + 3>LH XDQr $ޚ&S^['6AoͷRsț[) 4oz/u Y ;tc"笮y'nc@f/ON`{d6a,@ d\Ifa(-돦$cYg2|[g⛛ϟ8 Z22stO\x<3JϺsǧd*+(u_' kP3WTn&a)yѯeƌT׷!2J3YUU\su ]k8(DĕcC>F.>[ͺ-gNknKU߃O,CO$N-)`.c0gRR1M /o=? ez`GL=Y^"{ T"caX$%ܻ2{:&Eai<,%(usyww_G 7lL5Ѓ^^J8}c䞆1ޭ ؁:5LG\.Ajȇ{1Pv!GCZcF\Źm.u|Ѿ.W]% 0SI/ezϕBvTsS zWGN<Eo!ꯌ}*R0`)]>prYks\S[T5Ӎ*Ͱпh _BSk7ڿTMSM /Ni{_u/|OUE[?F0!{lĀ?>Aп =-M'\E딪C\n?R:DUUE.-mjcPKMNG.*,PK C; __MACOSX/UX JJPKC;__MACOSX/._test.pdfUX JJc`cg`b`MLVVP'A @+PK%!(RPKC;MNG.*, @test.pdfUXJJPK C; @At*__MACOSX/UXJJPKC;%!(R @*__MACOSX/._test.pdfUXJJPK$+mail-2.8.1/spec/fixtures/attachments/てすと.txt000066400000000000000000000000411436372131700234270ustar00rootroot00000000000000this is a test これわてすとmail-2.8.1/spec/fixtures/emails/000077500000000000000000000000001436372131700165305ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/.gitattributes000066400000000000000000000000771436372131700214270ustar00rootroot00000000000000# Never autoconvert line endings on fixture emails *.eml -text mail-2.8.1/spec/fixtures/emails/attachment_emails/000077500000000000000000000000001436372131700222125ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_content_disposition.eml000066400000000000000000000012631436372131700312210ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: text/x-ruby-script; name="hello.rb" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="api.rb" puts "Hello, world!" gets --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_content_location.eml000066400000000000000000000017301436372131700304640ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: Photo25.jpg Content-ID: Content-Disposition: inline jamisSqGSIb3DQEHAqCAMIjamisxCzAJBgUrDgMCGgUAMIAGCSqGSjamisEHAQAAoIIFSjCCBUYw ggQujamisQICBD++ukQwDQYJKojamisNAQEFBQAwMTELMAkGA1UEBhMCRjamisAKBgNVBAoTA1RE QzEUMBIGjamisxMLVERDIE9DRVMgQ0jamisNMDQwMjI5MTE1OTAxWhcNMDYwMjamisIyOTAxWjCB gDELMAkGA1UEjamisEsxKTAnBgNVBAoTIEjamisuIG9yZ2FuaXNhdG9yaXNrIHRpbjamisRuaW5= --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_message_rfc822.eml000066400000000000000000000104171436372131700276360ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: message/rfc822; name="ForwardedMessage.eml"; From xxxx@xxxx.com Tue May 10 11:28:07 2005 Return-Path: X-Original-To: xxxx@xxxx.com Delivered-To: xxxx@xxxx.com Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT) Received: from xxx.xxxxx.com ([127.0.0.1]) by localhost (xxx.xxxxx.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 70060-03 for ; Tue, 10 May 2005 17:26:49 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [69.36.39.150]) by xxx.xxxxx.com (Postfix) with ESMTP id 8B957A94B for ; Tue, 10 May 2005 17:26:48 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [64.233.184.203]) by xxx.xxxxx.com (Postfix) with ESMTP id 9972514824C for ; Tue, 10 May 2005 12:26:40 -0500 (CDT) Received: by xxx.xxxxx.com with SMTP id 68so1694448wri for ; Tue, 10 May 2005 10:26:40 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=xxxxx.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type; b=g8ZO5ttS6GPEMAz9WxrRk9+9IXBUfQIYsZLL6T88+ECbsXqGIgfGtzJJFn6o9CE3/HMrrIGkN5AisxVFTGXWxWci5YA/7PTVWwPOhJff5BRYQDVNgRKqMl/SMttNrrRElsGJjnD1UyQ/5kQmcBxq2PuZI5Zc47u6CILcuoBcM+A= Received: by 10.54.96.19 with SMTP id t19mr621017wrb; Tue, 10 May 2005 10:26:39 -0700 (PDT) Received: by 10.54.110.5 with HTTP; Tue, 10 May 2005 10:26:39 -0700 (PDT) Message-ID: Date: Tue, 10 May 2005 11:26:39 -0600 From: Test Tester Reply-To: Test Tester To: xxxx@xxxx.com, xxxx@xxxx.com Subject: Another PDF Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2192_32400445.1115745999735" X-Virus-Scanned: amavisd-new at textdrive.com ------=_Part_2192_32400445.1115745999735 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Just attaching another PDF, here, to see what the message looks like, and to see if I can figure out what is going wrong here. ------=_Part_2192_32400445.1115745999735 Content-Type: application/pdf; name="broken.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="broken.pdf" JVBERi0xLjQNCiXk9tzfDQoxIDAgb2JqDQo8PCAvTGVuZ3RoIDIgMCBSDQogICAvRmlsdGVyIC9G bGF0ZURlY29kZQ0KPj4NCnN0cmVhbQ0KeJy9Wt2KJbkNvm/od6jrhZxYln9hWEh2p+8HBvICySaE ycLuTV4/1ifJ9qnq09NpSBimu76yLUuy/qzqcPz7+em3Ixx/CDc6CsXxs3b5+fvfjr/8cPz6/BRu rbfAx/n3739/fuJylJ5u5fjX81OuDr4deK4Bz3z/aDP+8fz0yw8g0Ofq7ktr1Mn+u28rvhy/jVeD QSa+9YNKHP/pxjvDNfVAx/m3MFz54FhvTbaseaxiDoN2LeMVMw+yA7RbHSCDzxZuaYB2E1Yay7QU x89vz0+tyFDKMlAHK5yqLmnjF+c4RjEiQIUeKwblXMe+AsZjN1J5yGQL5DHpDHksurM81rF6PKab gK6zAarIDzIiUY23rJsN9iorAE816aIu6lsgAdQFsuhhkHOUFgVjp2GjMqSewITXNQ27jrMeamkg 1rPI3iLWG2CIaSBB+V1245YVRICGbbpYKHc2USFDl6M09acQVQYhlwIrkBNLISvXhGlF1wi5FHCw wxZkoGNJlVeJCEsqKA+3YAV5AMb6KkeaqEJQmFKKQU8T1pRi2ihE1Y4CDrqoYFFXYjJJOatsyzuI 8SIlykuxKTMibWK8H1PgEvqYgs4GmQSrEjJAalgGirIhik+p4ZQN9E3ETFPAHE1b8pp1l/0Rc1gl fQs0ABWvyoZZzU8VnPXwVVcO9BEsyjEJaO6eBoZRyKGlrKoYoOygA8BGIzgwN3RQ15ouigG5idZQ fx2U4Db2CqiLO0WHAZoylGiCAqhniNQjFjQPSkmjwfNTgQ6M1Ih+eWo36wFmjIxDJZiGUBiWsAyR xX3EekGOizkGI96Ol9zVZTAivikURhRsHh2E3JhWMpSTZCnnonrLhMCodgrNcgo4uyJUJc6qnVss nrGd1Ptr0YwisCOYyIbUwVjV4xBUNLbguSO2YHujonAMJkMdSI7bIw91Akq2AUlMUWGFTMAOamjU OvZQCxIkY2pCpMFo/IwLdVLHs6nddwTRrgoVbvLU9eB0G4EMndV0TNoxHbt3JBWwK6hhv3iHfDtF yokB302IpEBTnWICde4uYc/1khDbSIkQopO6lcqamGBu1OSE3N5IPSsZX00CkSHRiiyx6HQIShsS HSVNswdVsaOUSAWq9aYhDtGDaoG5a3lBGkYt/lFlBFt1UqrYnzVtUpUQnLiZeouKgf1KhRBViRRk ExepJCzTwEmFDalIRbLEGtw0gfpESOpIAF/NnpPzcVCG86s0g2DuSyd41uhNGbEgaSrWEXORErbw ------=_Part_2192_32400445.1115745999735-- --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_nonascii_filename.eml000066400000000000000000000012341436372131700305640ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: text/plain; name=ciële.txt Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=ciële.txt Hi there. --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_only_email.eml000066400000000000000000000014571436372131700272600ustar00rootroot00000000000000Subject: this message JUST contains an attachment From: Ryan Finnie To: bob@domain.dom Content-Disposition: attachment; filename=blah.gz Content-Transfer-Encoding: base64 Content-Description: Attachment has identical content to above foo.gz Message-Id: <1066974048.4264.62.camel@localhost> Mime-Version: 1.0 Date: 23 Oct 2003 22:40:49 -0700 Content-Type: application/x-gzip; NAME=blah.gz SubjectthismessageJUSTcontainsanattachmentFromRyanFinnierfinniedomaindomTobo bdomaindomContentDispositionattachmentfilenameAblahgzContentTypeapplication/ xgzipnameAblahgzContentTransferEncodingbase64ContentDescriptionAttachmenthas identicalcontenttoabovefoogzMessageId1066974048426462camellocalhostMimeVersi on10Date23Oct20032240490700H4sIAOHBmD8AA4vML1XPyVHISy1LLVJIy8xLUchNVeQCAHbe7 64WAmail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_pdf.eml000066400000000000000000000073531436372131700257020ustar00rootroot00000000000000From xxxx@xxxx.com Tue May 10 11:28:07 2005 Return-Path: X-Original-To: xxxx@xxxx.com Delivered-To: xxxx@xxxx.com Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT) Received: from xxx.xxxxx.com ([127.0.0.1]) by localhost (xxx.xxxxx.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 70060-03 for ; Tue, 10 May 2005 17:26:49 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [69.36.39.150]) by xxx.xxxxx.com (Postfix) with ESMTP id 8B957A94B for ; Tue, 10 May 2005 17:26:48 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [64.233.184.203]) by xxx.xxxxx.com (Postfix) with ESMTP id 9972514824C for ; Tue, 10 May 2005 12:26:40 -0500 (CDT) Received: by xxx.xxxxx.com with SMTP id 68so1694448wri for ; Tue, 10 May 2005 10:26:40 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=xxxxx.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type; b=g8ZO5ttS6GPEMAz9WxrRk9+9IXBUfQIYsZLL6T88+ECbsXqGIgfGtzJJFn6o9CE3/HMrrIGkN5AisxVFTGXWxWci5YA/7PTVWwPOhJff5BRYQDVNgRKqMl/SMttNrrRElsGJjnD1UyQ/5kQmcBxq2PuZI5Zc47u6CILcuoBcM+A= Received: by 10.54.96.19 with SMTP id t19mr621017wrb; Tue, 10 May 2005 10:26:39 -0700 (PDT) Received: by 10.54.110.5 with HTTP; Tue, 10 May 2005 10:26:39 -0700 (PDT) Message-ID: Date: Tue, 10 May 2005 11:26:39 -0600 From: Test Tester Reply-To: Test Tester To: xxxx@xxxx.com, xxxx@xxxx.com Subject: Another PDF with 🎉 Unicode chars in it 🍿 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2192_32400445.1115745999735" X-Virus-Scanned: amavisd-new at textdrive.com ------=_Part_2192_32400445.1115745999735 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Just attaching another PDF, here, to see what the message looks like, and to see if I can figure out what is going wrong here. ------=_Part_2192_32400445.1115745999735 Content-Type: application/pdf; name="broken.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="broken.pdf" JVBERi0xLjQNCiXk9tzfDQoxIDAgb2JqDQo8PCAvTGVuZ3RoIDIgMCBSDQogICAvRmlsdGVyIC9G bGF0ZURlY29kZQ0KPj4NCnN0cmVhbQ0KeJy9Wt2KJbkNvm/od6jrhZxYln9hWEh2p+8HBvICySaE ycLuTV4/1ifJ9qnq09NpSBimu76yLUuy/qzqcPz7+em3Ixx/CDc6CsXxs3b5+fvfjr/8cPz6/BRu rbfAx/n3739/fuJylJ5u5fjX81OuDr4deK4Bz3z/aDP+8fz0yw8g0Ofq7ktr1Mn+u28rvhy/jVeD QSa+9YNKHP/pxjvDNfVAx/m3MFz54FhvTbaseaxiDoN2LeMVMw+yA7RbHSCDzxZuaYB2E1Yay7QU x89vz0+tyFDKMlAHK5yqLmnjF+c4RjEiQIUeKwblXMe+AsZjN1J5yGQL5DHpDHksurM81rF6PKab gK6zAarIDzIiUY23rJsN9iorAE816aIu6lsgAdQFsuhhkHOUFgVjp2GjMqSewITXNQ27jrMeamkg 1rPI3iLWG2CIaSBB+V1245YVRICGbbpYKHc2USFDl6M09acQVQYhlwIrkBNLISvXhGlF1wi5FHCw wxZkoGNJlVeJCEsqKA+3YAV5AMb6KkeaqEJQmFKKQU8T1pRi2ihE1Y4CDrqoYFFXYjJJOatsyzuI 8SIlykuxKTMibWK8H1PgEvqYgs4GmQSrEjJAalgGirIhik+p4ZQN9E3ETFPAHE1b8pp1l/0Rc1gl fQs0ABWvyoZZzU8VnPXwVVcO9BEsyjEJaO6eBoZRyKGlrKoYoOygA8BGIzgwN3RQ15ouigG5idZQ fx2U4Db2CqiLO0WHAZoylGiCAqhniNQjFjQPSkmjwfNTgQ6M1Ih+eWo36wFmjIxDJZiGUBiWsAyR xX3EekGOizkGI96Ol9zVZTAivikURhRsHh2E3JhWMpSTZCnnonrLhMCodgrNcgo4uyJUJc6qnVss nrGd1Ptr0YwisCOYyIbUwVjV4xBUNLbguSO2YHujonAMJkMdSI7bIw91Akq2AUlMUWGFTMAOamjU OvZQCxIkY2pCpMFo/IwLdVLHs6nddwTRrgoVbvLU9eB0G4EMndV0TNoxHbt3JBWwK6hhv3iHfDtF yokB302IpEBTnWICde4uYc/1khDbSIkQopO6lcqamGBu1OSE3N5IPSsZX00CkSHRiiyx6HQIShsS HSVNswdVsaOUSAWq9aYhDtGDaoG5a3lBGkYt/lFlBFt1UqrYnzVtUpUQnLiZeouKgf1KhRBViRRk ExepJCzTwEmFDalIRbLEGtw0gfpESOpIAF/NnpPzcVCG86s0g2DuSyd41uhNGbEgaSrWEXORErbw ------=_Part_2192_32400445.1115745999735-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_pdf_lf.eml000066400000000000000000000072451436372131700263630ustar00rootroot00000000000000From xxxx@xxxx.com Tue May 10 11:28:07 2005 Return-Path: X-Original-To: xxxx@xxxx.com Delivered-To: xxxx@xxxx.com Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT) Received: from xxx.xxxxx.com ([127.0.0.1]) by localhost (xxx.xxxxx.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 70060-03 for ; Tue, 10 May 2005 17:26:49 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [69.36.39.150]) by xxx.xxxxx.com (Postfix) with ESMTP id 8B957A94B for ; Tue, 10 May 2005 17:26:48 +0000 (GMT) Received: from xxx.xxxxx.com (xxx.xxxxx.com [64.233.184.203]) by xxx.xxxxx.com (Postfix) with ESMTP id 9972514824C for ; Tue, 10 May 2005 12:26:40 -0500 (CDT) Received: by xxx.xxxxx.com with SMTP id 68so1694448wri for ; Tue, 10 May 2005 10:26:40 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=xxxxx.com; h=received:message-id:date:from:reply-to:to:subject:mime-version:content-type; b=g8ZO5ttS6GPEMAz9WxrRk9+9IXBUfQIYsZLL6T88+ECbsXqGIgfGtzJJFn6o9CE3/HMrrIGkN5AisxVFTGXWxWci5YA/7PTVWwPOhJff5BRYQDVNgRKqMl/SMttNrrRElsGJjnD1UyQ/5kQmcBxq2PuZI5Zc47u6CILcuoBcM+A= Received: by 10.54.96.19 with SMTP id t19mr621017wrb; Tue, 10 May 2005 10:26:39 -0700 (PDT) Received: by 10.54.110.5 with HTTP; Tue, 10 May 2005 10:26:39 -0700 (PDT) Message-ID: Date: Tue, 10 May 2005 11:26:39 -0600 From: Test Tester Reply-To: Test Tester To: xxxx@xxxx.com, xxxx@xxxx.com Subject: Another PDF with 🎉 Unicode chars in it 🍿 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2192_32400445.1115745999735" X-Virus-Scanned: amavisd-new at textdrive.com ------=_Part_2192_32400445.1115745999735 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Just attaching another PDF, here, to see what the message looks like, and to see if I can figure out what is going wrong here. ------=_Part_2192_32400445.1115745999735 Content-Type: application/pdf; name="broken.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="broken.pdf" JVBERi0xLjQNCiXk9tzfDQoxIDAgb2JqDQo8PCAvTGVuZ3RoIDIgMCBSDQogICAvRmlsdGVyIC9G bGF0ZURlY29kZQ0KPj4NCnN0cmVhbQ0KeJy9Wt2KJbkNvm/od6jrhZxYln9hWEh2p+8HBvICySaE ycLuTV4/1ifJ9qnq09NpSBimu76yLUuy/qzqcPz7+em3Ixx/CDc6CsXxs3b5+fvfjr/8cPz6/BRu rbfAx/n3739/fuJylJ5u5fjX81OuDr4deK4Bz3z/aDP+8fz0yw8g0Ofq7ktr1Mn+u28rvhy/jVeD QSa+9YNKHP/pxjvDNfVAx/m3MFz54FhvTbaseaxiDoN2LeMVMw+yA7RbHSCDzxZuaYB2E1Yay7QU x89vz0+tyFDKMlAHK5yqLmnjF+c4RjEiQIUeKwblXMe+AsZjN1J5yGQL5DHpDHksurM81rF6PKab gK6zAarIDzIiUY23rJsN9iorAE816aIu6lsgAdQFsuhhkHOUFgVjp2GjMqSewITXNQ27jrMeamkg 1rPI3iLWG2CIaSBB+V1245YVRICGbbpYKHc2USFDl6M09acQVQYhlwIrkBNLISvXhGlF1wi5FHCw wxZkoGNJlVeJCEsqKA+3YAV5AMb6KkeaqEJQmFKKQU8T1pRi2ihE1Y4CDrqoYFFXYjJJOatsyzuI 8SIlykuxKTMibWK8H1PgEvqYgs4GmQSrEjJAalgGirIhik+p4ZQN9E3ETFPAHE1b8pp1l/0Rc1gl fQs0ABWvyoZZzU8VnPXwVVcO9BEsyjEJaO6eBoZRyKGlrKoYoOygA8BGIzgwN3RQ15ouigG5idZQ fx2U4Db2CqiLO0WHAZoylGiCAqhniNQjFjQPSkmjwfNTgQ6M1Ih+eWo36wFmjIxDJZiGUBiWsAyR xX3EekGOizkGI96Ol9zVZTAivikURhRsHh2E3JhWMpSTZCnnonrLhMCodgrNcgo4uyJUJc6qnVss nrGd1Ptr0YwisCOYyIbUwVjV4xBUNLbguSO2YHujonAMJkMdSI7bIw91Akq2AUlMUWGFTMAOamjU OvZQCxIkY2pCpMFo/IwLdVLHs6nddwTRrgoVbvLU9eB0G4EMndV0TNoxHbt3JBWwK6hhv3iHfDtF yokB302IpEBTnWICde4uYc/1khDbSIkQopO6lcqamGBu1OSE3N5IPSsZX00CkSHRiiyx6HQIShsS HSVNswdVsaOUSAWq9aYhDtGDaoG5a3lBGkYt/lFlBFt1UqrYnzVtUpUQnLiZeouKgf1KhRBViRRk ExepJCzTwEmFDalIRbLEGtw0gfpESOpIAF/NnpPzcVCG86s0g2DuSyd41uhNGbEgaSrWEXORErbw ------=_Part_2192_32400445.1115745999735-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_with_base64_encoded_name.eml000066400000000000000000000035221436372131700317230ustar00rootroot00000000000000From xxxxxxxxx.xxxxxxx@gmail.com Sun May 8 19:07:09 2005 Return-Path: Message-ID: Date: Sun, 8 May 2005 14:09:11 -0500 From: xxxxxxxxx xxxxxxx Reply-To: xxxxxxxxx xxxxxxx To: xxxxx xxxx Subject: Fwd: Signed email causes file attachments In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5028_7368284.1115579351471" References: ------=_Part_5028_7368284.1115579351471 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline We should not include these files or vcards as attachments. ---------- Forwarded message ---------- From: xxxxx xxxxxx Date: May 8, 2005 1:17 PM Subject: Signed email causes file attachments To: xxxxxxx@xxxxxxxxxx.com Hi, Test attachments with Base64 encoded filename. ------=_Part_5028_7368284.1115579351471 Content-Type: application/pdf; name==?utf-8?B?VGhpcyBpcyBhIHRlc3QucGRm?= Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename==?utf-8?B?VGhpcyBpcyBhIHRlc3QucGRm?= MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGFDCCAs0w ggI2oAMCAQICAw5c+TANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3VpbmcgQ0EwHhcNMDUwMzI5MDkzOTEwWhcNMDYwMzI5MDkzOTEwWjBCMR8wHQYDVQQD ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMR8wHQYJKoZIhvcNAQkBFhBzbWhhdW5jaEBtYWMuY29t MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn90dPsYS3LjfMY211OSYrDQLzwNYPlAL 7+/0XA+kdy8/rRnyEHFGwhNCDmg0B6pxC7z3xxJD/8GfCd+IYUUNUQV5m9MkxfP9pTVXZVIYLaBw ------=_Part_5028_7368284.1115579351471-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_with_encoded_name.eml000066400000000000000000000035671436372131700305700ustar00rootroot00000000000000From xxxxxxxxx.xxxxxxx@gmail.com Sun May 8 19:07:09 2005 Return-Path: Message-ID: Date: Sun, 8 May 2005 14:09:11 -0500 From: xxxxxxxxx xxxxxxx Reply-To: xxxxxxxxx xxxxxxx To: xxxxx xxxx Subject: Fwd: Signed email causes file attachments In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5028_7368284.1115579351471" References: ------=_Part_5028_7368284.1115579351471 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline We should not include these files or vcards as attachments. ---------- Forwarded message ---------- From: xxxxx xxxxxx Date: May 8, 2005 1:17 PM Subject: Signed email causes file attachments To: xxxxxxx@xxxxxxxxxx.com Hi, Test attachments oddly encoded with japanese charset. ------=_Part_5028_7368284.1115579351471 Content-Type: application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3 Content-Transfer-Encoding: base64 Content-Disposition: attachment MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGFDCCAs0w ggI2oAMCAQICAw5c+TANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3VpbmcgQ0EwHhcNMDUwMzI5MDkzOTEwWhcNMDYwMzI5MDkzOTEwWjBCMR8wHQYDVQQD ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMR8wHQYJKoZIhvcNAQkBFhBzbWhhdW5jaEBtYWMuY29t MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn90dPsYS3LjfMY211OSYrDQLzwNYPlAL 7+/0XA+kdy8/rRnyEHFGwhNCDmg0B6pxC7z3xxJD/8GfCd+IYUUNUQV5m9MkxfP9pTVXZVIYLaBw ------=_Part_5028_7368284.1115579351471-- mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_with_quoted_filename.eml000066400000000000000000000070541436372131700313230ustar00rootroot00000000000000Return-Path: Received: from ?10.0.1.6? (d36-211-30.home1.cgocable.net [24.36.211.30]) by mx.google.com with ESMTPS id g14sm267889rvb.22.2009.05.13.08.42.03 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 13 May 2009 08:42:04 -0700 (PDT) Message-Id: From: Jeffrey Hardy To: Jeffrey Hardy Content-Type: multipart/mixed; boundary=Apple-Mail-6--218366681 Mime-Version: 1.0 (Apple Message framework v935.3) Subject: =?ISO-8859-1?Q?Eelanal=FC=FCsi_p=E4ring?= Date: Wed, 13 May 2009 11:42:01 -0400 X-Mailer: Apple Mail (2.935.3) --Apple-Mail-6--218366681 Content-Disposition: inline; filename*=ISO-8859-1''Eelanal%FC%FCsi%20p%E4ring.jpg Content-Type: image/jpeg; x-unix-mode=0700; name="=?ISO-8859-1?Q?Eelanal=FC=FCsi_p=E4ring.jpg?=" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4ADkFkb2JlAGTAAAAAAf/b AIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwM DAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAMgAyAwERAAIRAQMRAf/EAHsAAAIDAQEAAAAAAAAAAAAA AAgJBgcKBQQBAQAAAAAAAAAAAAAAAAAAAAAQAAEDAwEEBgYIAwkAAAAAAAIBAwQRBQYSADETByEi MjMUCFFhUmM0NUFxYlMVFjYJoUNz8EKSw1SEVRc3EQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIR AxEAPwB9e9aJ0+r17AuTzM/uI4TyUvFzwnCcf/P2a29pwJs2Q8Ua0QpAlw0BSESdlEBouoQ4Yf3U d1V0gsud+5p5lJDs2427Oo0R1uQzwrA3ZreUdGiLrNDxIZuJvoiq4q+hV2C17J+4/wAz7zItFoyh m031ua45IYakW9toyVpdTjJSIjzFDFoTFCFrrKqdRdygY/LXzV8r88uVttplKxpzIHGIlknSyGTb 5ciSStCwMloQNouLRurzQDrXTVF2Bi9hkLJs8Bw6o4jeh1F3oQdUkX11TYOvsArecDn4XIPlU5dL YBHl2YSTsWIkiUCPIdYMilG4qog8FKKO9VLSlKVVAyh5JkF3vkiYXipMlySRuFGZbNwiJXNRF1VJ V+lfpVd9KbgjEt97XJiOG84E6S0kNGV4jchTTiM6g1Ei6x3KNVqlE9GwGd5eeU6czckxgn7zNZnt tlCh2u2SI0QpL0cUZ1q8+yTKqjbqK4yogZaS0qtVoBjT/IP5hsStF+sdgt0O8Qbt4h8bjb58dXzN 4xdIDBxGCbIjTrKiLQk1V6KqDm+RsrL3+WmLs8woTluzyJAZZzCI4bbq/iDdW33EcaqBo6o8TUPQ ur012C3dgU/+7DAu44DygyWI6X4TYchuLMyGSKrT0yVEA42tK0qLTD9K+n69gzzzxt0lGGWXH7U/ NuTXiUQnAKC4BusvtgKUEkIlbLUq1SnoXYJfG/LRsDEkutK6Nkdgybi2BK3IBJBSHHozKFp4zNOJ 7aqpLqQ2y1AyX9v3mfBtPOeFIOYTQZDab45eYchR0NOaWTbfhm32RM20URJVVEMxqqqmwPS/FRlA Jx3ENpymlU3eqmwdfH5Oi6eGqpeKZMiVNycNUXp+utNgnewDJz8xblt5ieVmV8qb3fSsq3ptHbBk bsUlG33OOuqJKoVEIELquAqgptEYagUtSBlP5u4Dk/KjPcrwnOI7MXI8YmAzdoqGbkbiIyhDNhvK gk5GmR+E80ZCimKiqohj1QjN95a8xsZs8TLskwrLcHxDIJCSrFkF9s8+Ha5quNq42sWXIabbeVxs i0aSqooqotOjYCn8neA5ZzB5h24sNnRcZg2/hyFyGY04Qm1GopqDAoiuF0oNEVEXcS/SoaDLDOXE bUxARy4ZBKZBBF15tEekGiL1yRtNI1ovQKL6ERV6NgsHCxu9uUr9fmmhyGc8L94RCTw0FhQVItvF 1VoKABKRovSTpEXsigWp+boH+kkd1xe03v8AZ3/x2AFcozqz4ZFWZklwGC8SCsOztqhTXVcWgEba KvBbVV6TNN1VQV3bACXPnFHPMdZbZnVou9ut+e8vrqdmxmxXditsessCQkngTFADkKb0kifAiVRF lzhIA1I1AyCi2XIrLKzFrMhW1Pw5X/avKq5XF0mpwuI9J4gNynXWzkMPEHhyWPw3QbFsSaIyDYFX 8osrDlbz7Vuyk/dLW7cX4bUZvUjMNE4jjjLaLQT6+pB6dgcVhHMhmcATRVBBAXizVcRGxEOk1Mqo iCCLVVXoTYPTiFwczzmBLz6Qy3Bs9ktXgrHirg1kXBLmqiF5ubSkSMq4xH0w2yEXdFXDoiihBdf4 l70t3C7P8n2vr9e/YFMcxMNy/GbxJZyyM65cJSk+U8H+MkgXSIVdF6q8USVVQtVFqlFRKU2Cvoty uVlkm7BkAZnRp9t8TFt0W+yjoVQxIEKiGNVpVKKnV2CRLcLfn1vlYzPSVZryLSu+ERUF4mFXQT0O QIqD4aqIWmhjVNYgqpsA+XPlZEtV1NuxZLPyJ+xOpGkxZAaWGHWq1jFMaFENxtKK6giSglUMhLo2 A4PLVyizvJguuQlf7HYo0KR+HMyJdtnXQJD7raOSiYjjKhsF4dV0Khkqa1Wu5UUD3x3BYOLtybHa nJMl3IXPGzb1I0JLuF3RSQzkm2AACuNqgtg2Ig2IiAJQUXYKw/Osv/lE+F4vfJ2vvd/e/wAfs7BX vml+a2T5P8Ez2PnneO9r3Hs+vVsAhPfpbJfl/wAVbfivm3874D3f33r4ewRIfhh7zvQ7z+mvw3vP R6tg7y9/D7Hdsd38F3i919j777WwNy5e/o7B/lPy9P058p7R/D/5nvNWwS0OxH3/ABcTd/VXs/b9 GwB9/g/9S/t/s9g//9k= --Apple-Mail-6--218366681--mail-2.8.1/spec/fixtures/emails/attachment_emails/attachment_with_unquoted_name.eml000066400000000000000000000012541436372131700310220ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: text/plain; name=This is a test.txt Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=This is a test.txt Hi there. --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/error_emails/000077500000000000000000000000001436372131700212135ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/error_emails/bad_date_header.eml000066400000000000000000000046041436372131700247510ustar00rootroot00000000000000X-YMAIL-UMID: 1_28022_AGnHtEQAAW9xTQLt8wZPlyfni5U X-Apparently-To: someone@yahoo.com via 68.180.199.105; Fri, 10 Dec 2010 19:20:19 -0800 Received-SPF: pass (mta1007.mail.sp2.yahoo.com: domain of return@reactive-outpost.com designates 74.206.28.55 as permitted sender) X-YMailISG: EfAmUiocZAp0Gt06jFhMyq.RIPUVX9lzgOtsRqYzqYiHPTr1 0fU8Vw4OuGrVz8pSoGW6xDId01O9G9v_HqarLXv8V_3Z9ut5fddpRwyrVOpc 1NYVLhP.FzTcsd9snLKon1z0xEKDX0aWVgu6rOeJ3niXPtE3ubgKne3SWhrc 9Jh34ln.bbeJ52jQ7ToV0m5oC1_T47MCsj._NgxOknVeA1lAJbbtNAEclmXl SQvHnQENVjs9FKYmFsB8d1dSX61CsJq0OMSpC5aqnGFAV2DBPOggUD217rpT n.5Pe5NXv16E0mXO2gNKgtho5W72qSE.1nWBGc5Vl0h8XrXUj._O9Nkajzg2 .klfTThF3zT2ThdTWgFl4lwkNjPKrc1EvlDcd1IPDQYwvMc1SEUpP_lddKwd aQiDt9G9Bu_Nf9vS5T97ZrS6pJJde4U0vrV872UEF.Mj2kpocFr_ba3fC6wP kUO.gj3xw2YQmo3I56NV66VndTOrSya2qAGpkCjkWtT6irAxwXakWlts.EFC iCRmdqsx7CN4UdCJw3vtDc7ASdV5Ty.kKy2GvIrHOFW.gFYGCXM7V0YnXBD1 ho5ePgvP6hGNkrHA9MQzUKq7s6uikRvVPBR7ojjcxqpKOgilKuobsYeuEKZ. kOvWe6P3uZJxV4KVnGfBxCe9SU27RdVpdlWmI3cJc7ut2OfMUoTnI_dVBbK8 1O0tXTco9FYvL8IJfS4RzSnQOw7HDcqF4oNAeghagmlKAuvSCYk19XkqIdDd tzQO1K3DxMIdvS5ut39WQ.LoDu0b6BmFB.YDgUMF6zM3PtgzoJuVumOg1fvh jGf.3v5mgno63PiAoKoBSQkdCdf0GD_jPX1RX_Us405EVLsTjzyjiEno99Vq pxps1ab0rNal.g4Nep2ik_W7TgX6GCxUtZVFoHRbl4rA7gMPIPuF0MF5SkTN jd6vOu6eYRCyCBo_afBI_FkaG6J4gxis8FtAOpUFmXLW7Iwh2uVr4aoiv7ag Ee2U3XYQovYoYtzCsg.iAe97SjJcqINnps0DoC5ky9ijX9WSz4tJj_HgXWAo 2e8gh.25kkMg70QTFOdPONgQe3dF2g9wI7ELcIcMYSyMbvqqAY3OMTigxh9O _7PpaK_qHQ270JbYhnK53ZrNrIIwM1lhBjdjLfNjSaotnLT5.t1BobGskqhz 90CGlOIrzeI2xo_3c8Q.K8hceK_9oxsMP7TyML6J9KaEbV3lW0vHFUxXb21u 4bdKY3KBsxOPCA-- X-Originating-IP: [74.206.28.55] Authentication-Results: mta1007.mail.sp2.yahoo.com from=reactive-outpost.com; domainkeys=neutral (no sig); from=reactive-outpost.com; dkim=neutral (no sig) Received: from 127.0.0.1 (EHLO reactive-outpost.com) (74.206.28.55) by mta1007.mail.sp2.yahoo.com with SMTP; Fri, 10 Dec 2010 19:20:19 -0800 Received: from localhost (127.0.0.1) by reactive-outpost.com id h0calo0n7lgf for ; Fri, 10 Dec 2010 22:08:27 -0800 (envelope-from ) From: "Grants-Notification" Subject: You may_be Eligible for Legitimate_Cash from_GovAgencies! To: someone@yahoo.com Precedence: junk In-Reply-To: someone@yahoo.com Content-Type: text/html ; charest="us-ascii" Content-Transfer-Encoding: 7bit Date:
mail-2.8.1/spec/fixtures/emails/error_emails/bad_date_header2.eml000066400000000000000000000021521436372131700250270ustar00rootroot00000000000000X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0xO0Q9MTtTQ0w9MA== X-Message-Status: n X-SID-PRA: enews@Free-Quilting.com X-AUTH-Result: NONE X-Message-Info: JGTYoYF78jHCcITVD+zs6u3ahcolNfp0m61kNO2SBMwKZtwdSoGZLR+eV3xtqv3QU2mvP3b1AtESP6eCYbaI4dABkTSkMMCjZGPGH3Q01dsRSddQ0kCWDw== Received: from drg.drgnetwork.com ([63.76.155.39]) by col0-mc2-f14.Col0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 14 Dec 2010 22:59:10 -0800 Received: from SFGAS1.DRGNETWORK.COM (sfgas1.drgnetwork.com [63.76.155.11]) by drg.drgnetwork.com (8.13.8/8.13.8) with ESMTP id oBF6xAuc018214 for ; Wed, 15 Dec 2010 00:59:10 -0600 Message-Id: <201012150659.oBF6xAuc018214@drg.drgnetwork.com> Sender: enews@Free-Quilting.com Date: Wed, 15 Dec 2010 59:10 -0500 From: "Free-Quilting.com" MIME-Version: 1.0 To: cc: Subject: 40% OFF holiday patterns and fabric! Content-Type: multipart/alternative; boundary="--PART.BOUNDARY.0001" Return-Path: bounces@strategicfulfillment.com X-OriginalArrivalTime: 15 Dec 2010 06:59:10.0647 (UTC) FILETIME=[93232C70:01CB9C25] mail-2.8.1/spec/fixtures/emails/error_emails/bad_encoded_subject.eml000066400000000000000000000000451436372131700256370ustar00rootroot00000000000000Subject: =?NONE?B?VEVTVA=?= TEST mail-2.8.1/spec/fixtures/emails/error_emails/bad_subject.eml000066400000000000000000000052531436372131700241640ustar00rootroot00000000000000Received: from survey1usmta.mysurvey.com (survey1usmta.mysurvey.com [198.178.238.149]) by mtain-dh02.r1000.mx.aol.com (Internet Inbound) with ESMTP id 35AF9380001BD for ; Wed, 15 Dec 2010 12:22:13 -0500 (EST) Received: from 172.30.44.41 (172.30.44.57) by survey1usmta.mysurvey.com (PowerMTA(TM) v3.5r15) id h13ska0ko6cn for ; Wed, 15 Dec 2010 12:21:20 -0500 (envelope-from ) From: =?UTF-8?B?TXlTdXJ2ZXk=?= =?UTF-8?B?LmNvbSAmIEM=?= =?UTF-8?B?YXJvbCBBZGE=?= =?UTF-8?B?bXM=?= REPLY-TO: carol@reply.mysurvey.com To: someone@aol.com Date: Wed, 15 Dec 2010 12:21:20 -0500 Subject: =?UTF-8?B?TXlTdXJ2ZXk=?= =?UTF-8?B?LmNvbTogIFk=?= =?UTF-8?B?b3UgaGF2ZSA=?= =?UTF-8?B?YSBzdXJ2ZXk=?= =?UTF-8?B?IHdhaXRpbmc=?= =?UTF-8?B?ISAg?= =?UTF-8?Q?91123105?= =?UTF-8?B??= MIME-Version: 1.0 Content-Type: multipart/alternative;boundary="----=_Layout_Part_DC7E1BB5_1105_4DB3_BAE3_2A6208EB099A" x-aol-global-disposition: G X-AOL-SCOLL-SCORE: 1:2:376293952:93952408 X-AOL-SCOLL-URL_COUNT: 5 x-aol-sid: 3039ac1d41164d08f9453480 X-AOL-IP: 198.178.238.149 X-AOL-SPF: domain : mysurvey.com SPF : pass ------=_Layout_Part_DC7E1BB5_1105_4DB3_BAE3_2A6208EB099A Content-type: text/plain;charset="UTF-8" CONTENT-TRANSFER-ENCODING: 8bit You have a survey waiting! To take the survey: ================================================================== Please do not reply to this email, as we do not process emails sent to this address. To view FAQ's or to contact us, please go to our http://www.mysurvey.com/index.cfm?action=Main.lobbyGeneral&MyContent=contact page. ================================================================== You received this email because you (or someone in your household) registered to be a MySurvey.com member. Being a MySurvey.com member means receiving periodic email invitations to give your opinions via e-surveys as well as being eligible for special projects and product tests. If you wish to be removed from the MySurvey.com panel, please click here to http://www.mysurvey.com/index.cfm?action=Main.lobbyGeneral&myContent=unsubscribes. ================================================================== ------=_Layout_Part_DC7E1BB5_1105_4DB3_BAE3_2A6208EB099A Content-type: text/html;charset="UTF-8" CONTENT-TRANSFER-ENCODING: 8bit
hello world
------=_Layout_Part_DC7E1BB5_1105_4DB3_BAE3_2A6208EB099A-- mail-2.8.1/spec/fixtures/emails/error_emails/cant_parse_from.eml000066400000000000000000000021251436372131700250540ustar00rootroot00000000000000Date: Thu, 11 Jun 2009 23:25:02 -0700 From: Apple To: karl.baum@gmail.com Message-Id: <7oh6b1$1clhrjk@badger-vip.apple.com> Subject: Meet the new MacBook Pro family. Now includes 13-inch. Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=mimepart_4b0c353551675_3d1c15b79ea5e70c1783 --mimepart_4b0c353551675_3d1c15b79ea5e70c1783 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline From one solid piece of aluminum comes a MacBook Pro that's thin and light,= beautifully streamlined, and durable. --mimepart_4b0c353551675_3d1c15b79ea5e70c1783 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline From one solid piece of aluminum comes a MacBook Pro that's thin and light,= beautifully streamlined, and durable.
--mimepart_4b0c353551675_3d1c15b79ea5e70c1783-- mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_7-bit.eml000066400000000000000000000440421436372131700301440ustar00rootroot00000000000000Received: from nahou-mscnx06p.corp.enron.com ([192.168.110.237]) by NAHOU-MSMBX03V.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Thu, 10 Jan 2002 16:10:15 -0600 Received: from NAHOU-MSMSW06P.corp.enron.com ([192.168.110.228]) by nahou-mscnx06p.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Thu, 10 Jan 2002 16:10:14 -0600 Received: from mailman.enron.com (unverified) by NAHOU-MSMSW06P.corp.enron.com (Content Technologies SMTPRS 4.2.5) with ESMTP id for ; Thu, 10 Jan 2002 16:10:13 -0600 Received: from email11.quris.net (email11.quris.net [208.169.17.235]) by mailman.enron.com (8.11.4/8.11.4/corp-1.06) with ESMTP id g0AMAB920109 for ; Thu, 10 Jan 2002 16:10:11 -0600 (CST) Received: from localhost.quris.net (localhost [127.0.0.1]) by email11.quris.net (8.12.1/8.12.1) with SMTP id g0AM9nNk021044 for emclaug@enron.com; Thu, 10 Jan 2002 15:10:08 -0700 (MST) Message-Id: <101BN3c3ce68600277550d@bounce.quris.net> Errors-To: 101BN3c3ce68600277550d@bounce.quris.net From: Discover Card Reply-To: discovercard_newsflash@discover.qrs1.net To: emclaug@enron.com Subject: Discover(R) Card News Online - January 2002 Date: Wed, 9 Jan 2002 19:47:50 MST X-Quris: 8:EC:1440:0:101BN3c3ce68600277550d MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="-----=aaaaaaaaaa0" Return-Path: 101BN3c3ce68600277550d@bounce.quris.net -------=aaaaaaaaaa0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7-bit DISCOVERÆ CARD News Online January 2002 DISCOVER log in to the Account Center Internet ShopCenter(SM) In This Edition: Be Charitable Get Organized Manage Your Finances Better Protect Yourself Save More Money DISCOVERÆ It's a new year and time for new beginnings. Let us help you out with some possible resolutions. Be sure to read on! Be Charitable $1 Million Donated to the Families of Freedom Scholarship Fundô We're happy to announce that the second $1 million for the Discover Card Relief Efforts program, has been donated to the Families of Freedom Scholarship Fund*. Families of Freedom Scholarship Fund(TM) The Fund will benefit children and spouses of airplane crew and passengers, World Trade Center and Pentagon employees and visitors, as well as firefighters, emergency medical and law enforcement personnel affected by the attacks of September 11th. Thanks to you, we're making quick progress toward our goal of $5 million to help America's relief efforts by doing what you do everyday -- using your Discover Card. Learn more about the Discover Card Donation Program. To make a personal donation to the Families of Freedom Scholarship Fund, visit www.familiesoffreedom.org . Return to TOP Get Organized Four More Ways to Manage your Account... Discover Interactive With the Discover Inter@ctive e-mail reminders, it's easier than ever to manage your DiscoverÆ Card Account. In addition to the Discover Inter@ctive e-mail reminders already offered -- there are now four new convenient options that will notify you when: A Balance Transfer has Posted A Merchant Refund or Credit has Posted A Purchase Exceeds a Specified Amount (set by you) The Account Balance Exceeds a Specified Amount (set by you) To view a sample e-mail or to sign up for these new Discover Inter@ctive e-mails, click here today, and start enjoying the benefits right away. Return to TOP Manage Your Finances Better TRANSFER A BALANCE ONLINE Consolidate Your Holiday Balances and Save! Are all those holiday credit balances too much to keep up with? We can make it easier and help you save money! Just transfer those high-rate holiday balances to your Discover Card and get a special balance transfer rate! We can even send you an e-mail when your Balance Transfer has posted to your Discover Card account. Transfer a Balance or Learn more . Return to TOP Protect Yourself KNOW FRAUD(TM) Know Fraud and Keep Your Identity Safe Discover Card is a proud participant in the Know Fraudô campaign, a national initiative led by the Federal Government to prevent identity theft. Learn easy ways to protect your identity, how identity thieves work and more. Get informed! Return to TOP Save More Money Strunk and White Get a special Cashback Bonus award Barnes & Noble.com Get a 7% Cashback BonusÆ award** when you use your Discover Card to buy anything from Barnes & Noble.com. Plus, get FREE SHIPPING when you purchase two or more items in a single order. Hurry and stock up on all books, textbooks, movies, posters, music and more, only at Barnes & Noble.com . Return to TOP IMPORTANT INFORMATION PLEASE DO NOT REPLY TO THIS E-MAIL This e-mail was sent to: emclaug@enron.com You are receiving this e-mail because you are a registered Discover Card Account Center user and have subscribed to receive e-mail newsletters from Discover Card. To unsubscribe click here , log in to the Account Center, and change your settings. To update your e-mail address, or change your Account Center preferences, click here and log in. If you have questions about your Account, please e-mail us through Secure Messages and we will be happy to assist you. Discover Card takes your online security seriously. Enjoy 100% Fraud Protection against unauthorized transactions whenever you use your Discover Card, online or off. So, you can rest easy when you use your Discover Card. We respect your privacy. To view our privacy policy online, visit Discovercard.com * Discover Financial Services is not associated with CSFA. Citizens' Scholarship Foundation of America, Families of Freedom Scholarship Fund and all associated logos are trademarks of Citizens' Scholarship Foundation of America. ** Special Cashback Bonus award Terms and Conditions: For Cardmembers who participate in the Cashback Bonus program. This special Cashback Bonus award is separate from your annual Cashback Bonus award you may receive from Discover Card, and is not part of the Discover Card Cashback Bonus award calculation method. If, as of the date we determine whether you meet the terms of this offer, your Account is closed or delinquent, you will not receive this special Cashback Bonus award. Please allow 6 to 8 weeks for your special Cashback Bonus award to be credited to your Discover Card Account. Offer not transferable. ©2002 Discover Bank. Member FDIC. -------=aaaaaaaaaa0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7-bit DISCOVERÆ CARD News Online January 2002 DISCOVER log in to the Account Center Internet ShopCenter(SM) In This Edition: Be Charitable Get Organized Manage Your Finances Better Protect Yourself Save More Money DISCOVERÆ It's a new year and time for new beginnings. Let us help you out with some possible resolutions. Be sure to read on! Be Charitable $1 Million Donated to the Families of Freedom Scholarship Fundô We're happy to announce that the second $1 million for the Discover Card Relief Efforts program, has been donated to the Families of Freedom Scholarship Fund*. Families of Freedom Scholarship Fund(TM) The Fund will benefit children and spouses of airplane crew and passengers, World Trade Center and Pentagon employees and visitors, as well as firefighters, emergency medical and law enforcement personnel affected by the attacks of September 11th. Thanks to you, we're making quick progress toward our goal of $5 million to help America's relief efforts by doing what you do everyday -- using your Discover Card. Learn more about the Discover Card Donation Program. To make a personal donation to the Families of Freedom Scholarship Fund, visit www.familiesoffreedom.org . Return to TOP Get Organized Four More Ways to Manage your Account... Discover Interactive With the Discover Inter@ctive e-mail reminders, it's easier than ever to manage your DiscoverÆ Card Account. In addition to the Discover Inter@ctive e-mail reminders already offered -- there are now four new convenient options that will notify you when: A Balance Transfer has Posted A Merchant Refund or Credit has Posted A Purchase Exceeds a Specified Amount (set by you) The Account Balance Exceeds a Specified Amount (set by you) To view a sample e-mail or to sign up for these new Discover Inter@ctive e-mails, click here today, and start enjoying the benefits right away. Return to TOP Manage Your Finances Better TRANSFER A BALANCE ONLINE Consolidate Your Holiday Balances and Save! Are all those holiday credit balances too much to keep up with? We can make it easier and help you save money! Just transfer those high-rate holiday balances to your Discover Card and get a special balance transfer rate! We can even send you an e-mail when your Balance Transfer has posted to your Discover Card account. Transfer a Balance or Learn more . Return to TOP Protect Yourself KNOW FRAUD(TM) Know Fraud and Keep Your Identity Safe Discover Card is a proud participant in the Know Fraudô campaign, a national initiative led by the Federal Government to prevent identity theft. Learn easy ways to protect your identity, how identity thieves work and more. Get informed! Return to TOP Save More Money Strunk and White Get a special Cashback Bonus award Barnes & Noble.com Get a 7% Cashback BonusÆ award** when you use your Discover Card to buy anything from Barnes & Noble.com. Plus, get FREE SHIPPING when you purchase two or more items in a single order. Hurry and stock up on all books, textbooks, movies, posters, music and more, only at Barnes & Noble.com . Return to TOP IMPORTANT INFORMATION PLEASE DO NOT REPLY TO THIS E-MAIL This e-mail was sent to: emclaug@enron.com You are receiving this e-mail because you are a registered Discover Card Account Center user and have subscribed to receive e-mail newsletters from Discover Card. To unsubscribe click here , log in to the Account Center, and change your settings. To update your e-mail address, or change your Account Center preferences, click here and log in. If you have questions about your Account, please e-mail us through Secure Messages and we will be happy to assist you. Discover Card takes your online security seriously. Enjoy 100% Fraud Protection against unauthorized transactions whenever you use your Discover Card, online or off. So, you can rest easy when you use your Discover Card. We respect your privacy. To view our privacy policy online, visit Discovercard.com * Discover Financial Services is not associated with CSFA. Citizens' Scholarship Foundation of America, Families of Freedom Scholarship Fund and all associated logos are trademarks of Citizens' Scholarship Foundation of America. ** Special Cashback Bonus award Terms and Conditions: For Cardmembers who participate in the Cashback Bonus program. This special Cashback Bonus award is separate from your annual Cashback Bonus award you may receive from Discover Card, and is not part of the Discover Card Cashback Bonus award calculation method. If, as of the date we determine whether you meet the terms of this offer, your Account is closed or delinquent, you will not receive this special Cashback Bonus award. Please allow 6 to 8 weeks for your special Cashback Bonus award to be credited to your Discover Card Account. Offer not transferable. ©2002 Discover Bank. Member FDIC. -------=aaaaaaaaaa0-- mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_empty.eml000066400000000000000000000043731436372131700303630ustar00rootroot00000000000000Recieved: from nahou-mscnx06p.corp.enron.com ([192.168.110.237]) by NAHOU-MSMBX03V.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Tue, 13 Nov 2001 19:08:16 -0800 Received: from corp.enron.com ([192.168.110.228]) by nahou-mscnx06p.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Tue, 13 Nov 2001 21:07:21 -0600 Received: from mailman.enron.com (unverified) by corp.enron.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Tue, 13 Nov 2001 21:07:19 -0600 Received: from smtp011.mail.yahoo.com (smtp011.mail.yahoo.com [216.136.173.31]) by mailman.enron.com (8.11.4/8.11.4/corp-1.06) with ESMTP id g343Bbl58584 for ; Tue, 13 Nov 2001 21:07:07 -0600 (CST) Received: from unknown (HELO localhost) (youdd5o2o449465@219.133.84.88 with login) by smtp011.mail.yahoo.com with SMTP; Wed, 14 Nov 2001 03:13:54 -0000 MIME-Version: 1.0 From: 3712f2@msa.hinet.net To: brucegemini@yahoo.com.tw Subject: 4d8119¡@(¤j¸ÉªwÄѱM½æ) ¤j®a»¡­^»y ¨C¤éÅ¥MP3 (2004¦~6¤ë¥÷) ÁcÅ餤¤å¥úºÐª© (­^»y±Ð¾Ç)¡@8afb90 BCc: Array Content-Type: text/html; charset="big5" Content-Transfer-Encoding: Message-ID: <11107978796724623> 9bbf38a544f990e73cd12f3c56c60e6180edebd31d752d3997fa4c0650d6aaa338f73f155d5d382832b195b33cbbaa243830c981e12db0c9aac12db9a39836caab5058c0f5efbf326331103f9e1008c106f630fe4d33575efa5d362a28ece62c3fd2a034df2dab92e1f0f664b6179889f4f98a962e2287e336ec652475ccdf7fcdd85f8e025161d8f10c3bd9cc5701c0c7ed1ed84b5b2c01a05eee9e641da8b0

³nÅé«Ò°ê§ó·s¨³³t 06f630fe4d33575efa5d362a28ece62c3fd2a034df2dab92e1f0f664b6179889f4f98a962e2287e336ec652475ccdf7fcdd85f8e025161d8f10c3bd9cc5701c0c7ed1ed84b5b2c01a05eee9e641da8b09bbf38a544f990e73cd12f3c56c60e6180edebd31d752d3997fa4c0650d6aaa338f73f155d5d382832b195b33cbbaa243830c981e12db0c9aac12db9a39836caab5058c0f5efbf326331103f9e1008c1 _______________________________________________________________________ Yahoo! ¤u¨ã¦C - ¤º¸m¨¾¤î¼u¥Xµøµ¡¤u¯à¡I http://toolbar.yahoo.com.hk mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_plain.eml000066400000000000000000000143261436372131700303270ustar00rootroot00000000000000Return-Path: Delivered-To: em-ca-bruceg-spam@em.ca Received: (qmail 32184 invoked by uid 700); 28 Mar 2005 01:14:54 -0000 Delivered-To: em-ca-em-ca-bruceg@em.ca Received: (qmail 32179 invoked by uid 115); 28 Mar 2005 01:14:54 -0000 Received: from baocqccyw@hq.lindsayelec.com by churchill by uid 64011 with qmail-scanner-1.22 (clamdscan: 0.75-1. spamassassin: 2.63. Clear:RC:0(200.141.184.56):. Processed in 10.454045 secs); 28 Mar 2005 01:14:54 -0000 Received: from dial.suednet.com.br (HELO hq.lindsayelec.com) (200.141.184.56) by churchill.factcomp.com with SMTP; 28 Mar 2005 01:14:42 -0000 Return-path: From: shavonda Cabral To: Subject: bookkeeping Get in on IGTS asap. Date: Sun, 27 Mar 2005 19:11:59 -0600 Reply-To: MIME-Version: 1.0 X-Virus-Status: Scanned by norton Message-ID: <41314357824.13240873.93296@oxygen-k19.hq.lindsayelec.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: plain Content-Length: 5102 Lines: 125 acidness Exciting Easter Investor Alert Ticker:IGTS Current:0.01 Rating:Big Mover Next Week This st0ck receives our top rating - 10 out of 10 Breaking NEWS (released last night): Intelligent Sports, Inc. Offers Affordable Alternative This is the first news release the company put out since November - this is going to be exciting stock play Jump on board while you can - Don't regret It later About the Company: Youth And Amateur Sports Company Poised For Growth Intelligent Sports, Inc. is a publicly held company trading on the OTC markets under the ticker symbol ìIGTSî. Intelligent Sports will be the holding company for several sports related businesses. Intelligent Sports provides business units with strategic guidance and support in the areas of marketing, sales, sponsorships, partnerships, policy & procedures, finance and expansion. Their initial business launch is to develop youth and amateur sports centers throughout the country that offers a year-round sports calendar with emphasis on youth and amateur sports programs and skill development. Their plan is to expand this concept into membership-based, multi-purpose sports facilities that will promote a diverse range of sports programs, leagues, tournaments, clinics, individual sports skill development and nutritional training. Fresh News: UPLAND, Calif., Mar 22, 2005 (PRIMEZONE via COMTEX) Participation fees for school sports programs continues to escalate, at the same time record obesity levels in children are being reported by the Center for Disease Control. Intelligent Sports, Inc. (Pink Sheets:IGTS) is working to do their part to curb this alarming trend of by offering affordable fitness centers to kids. "The time when school sports programs had enrollment fees of $10 is fading," said former NBA star and Intelligent Sports, Inc. board member, Reggie Theus. "Not every parent is willing to pay $300 enrollment fees for a sport their child is only casually interested in; some parents can't afford to pay that much for a sport their child excels at." According to the President's Council on Physical Fitness and Sports, only 17 percent of middle and junior high schools and 2 percent of senior high schools require daily physical activity for all students. Hoping to fill the gap, The Sports Zone by Intelligent Sports will support a wide range of membership-based after-school sports programs, weekend leagues and tournaments promoting individual athletic skill development, the concepts of teamwork and discipline, and a love of the game. The Sports Zone opened in early October in Upland, California. It encompasses a 10,000 square foot facility featuring two basketball courts and caters to court sports including basketball, volleyball, cheerleading, and wrestling, and also has the ability to host soccer, football and other field-related athletic activity within the complex arena. +++++++++++++++++++++++++++ IGTS is expected to Explode All Next Week Be Sure To Get It Immediately, and profit big! ++++++++++++++++++++++++++++ Disclaimer This publication is not registered investment advisor, The information presented above is not an offer to buy or sell securities it contains "forward looking statements" within the meaning of Section 27A of the Securities Act of 1933 and Section 21B of the Securities Exchange Act of 1934. Any statements that express or involve discussions with respect to predictions, goals, expectations, beliefs, plans, projections, objectives, assumptions or future events or performance are not statements of historical fact and may be "forward looking statements." In compliance with Section 17(b), the publishers of this report disclose the holding of IGTS shares prior to the publication of this report. Be aware of an inherent conflict of interest resulting from such holdings due to our intent to profit from the liquidation of these shares. Shares may be sold at any time, even after positive statements have been made regarding the above company. Since we own shares, there is an inherent conflict of interest in our statements and opinions. Readers of this publication are cautioned not to place undue reliance on forward looking statements, which are based on certain assumptions and expectations involving various risks and uncertainties, that could cause results to differ materially from those set forth in the forward- looking statements. Please be advised that nothing within this email shall constitute a solicitation or an offer to buy or sell any security mentioned herein. This newsletter is neither a registered investment advisor nor affiliated with any broker or dealer. All statements made are our express opinion only and should be treated as such. We may own, buy and sell any securities mentioned at any time. This report includes forward-looking statements within the meaning of The Private Securities Litigation Reform Act of 1995. This newsletter was paid 41 500, from third party to send this report. Please do your own diligence before investing in any profiled company. You may lose money from investing. caddis worktable mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_qp_with_space.eml000066400000000000000000000035751436372131700320560ustar00rootroot00000000000000Return-Path: Delivered-To: em-ca-bait-precedes@em.ca Received: (qmail 7622 invoked by uid 115); 7 Nov 2004 21:30:59 -0000 Received: from fyouizjnp@swissonline.ch by churchill by uid 64011 with qmail-scanner-1.22 (clamdscan: 0.75-1. spamassassin: 2.63. Clear:RC:0(222.47.112.31):. Processed in 1.163709 secs); 07 Nov 2004 21:30:59 -0000 Received: from unknown (HELO 209.5.178.248) (222.47.112.31) by churchill.factcomp.com with SMTP; 7 Nov 2004 21:30:57 -0000 Message-ID: From: "Wilmer Capps" To: bait-passover@em.ca Subject: Low or High Blood Pressure? We can help. Date: Sun, 07 Nov 2004 18:23:56 -0300 X-Mailer: gene annulus pneumococcus-polyhedral: belgrade hanoverian lima MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_003A_5008K66J.3Z4LC80J" This is a multi-part message in MIME format. ------=_NextPart_000_003A_5008K66J.3Z4LC80J Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted printable If you're in need of a good RX site for online purchases, we are your answer. With Tens of Thousands of happy customers who saved huge, you can't go wrong. http://magyar8stator.com/26 Lots More Info Here Above URL is for more info & if you are interested. ------=_NextPart_000_003A_5008K66J.3Z4LC80J Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable If you're in need of a good RX site for online purchases, we are your answ= er.

With Tens of Thousands of happy customers who saved huge, you can't go wro= ng.

Lots More Info Here


Above URL is for more info & if you are interested.
------=_NextPart_000_003A_5008K66J.3Z4LC80J-- mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_spam.eml000066400000000000000000000037521436372131700301650ustar00rootroot00000000000000Received: from nahou-mscnx06p.corp.enron.com ([192.168.110.237]) by napdx-msmbx01v.corp.enron.com with Microsoft SMTPSVC(5.0.2195.1600); Sun, 19 Aug 2001 04:06:57 -0800 Received: from corp.enron.com ([192.168.110.226]) by nahou-mscnx06p.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Sun, 19 Aug 2001 06:06:02 -0600 Received: from mailman.enron.com (unverified) by corp.enron.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Sun, 19 Aug 2001 06:04:08 -0600 Received: from poetrix.com ([61.146.170.133]) by mailman.enron.com (8.11.4/8.11.4/corp-1.06) with ESMTP id g343Bbl38716 for ; Sun, 19 Aug 2001 07:03:27 -0500 (CDT) Message-ID: <35FDF82F.D000339@poetrix.com> Date: Sun, 19 Aug 2001 06:31:03 -0700 From: "neal ragland" User-Agent: AspMail 3.06 X-Accept-Language: en-us MIME-Version: 1.0 To: "palmer vladi.Pimenovraud" Suvladi.Pimenovject: For a vladi.Pimenovetter and more promising future just check eke Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7vladi.Pimenovit middagh oldusercompare othermachine one-twist natascha mz05 ntsoft netvladi.Pimenovr We supply high quality medications vladi.Pimenovy mail order at very competitive prices and provide a professional, convenient and affordavladi.Pimenovle means of purchasing your presc_ription medicines online Depresion-an"xiety, Antivladi.Pimenoviotic, Wt Loss, Women's Health, Mus-cle Relaxants, Sleeping Aids, Allergies and Paain Relief. Your tastes will vladi.Pimenove met here with 600 medications Hscearpomh http://fi.com.adherentgood.com/?2NX1q/vladi.Pimenoviayimh more people are using it for quicker rx refill When you're not with me?Well darling Im telling you now Im no good without you anyhowAnd have I told you lately that I love you Or you and I, If I only had wings of a little angel mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_text-html.eml000066400000000000000000000035761436372131700311570ustar00rootroot00000000000000Return-Path: Delivered-To: rait@bruce-guenter.dyndns.org Received: (qmail 12977 invoked from network); 6 May 2005 10:58:40 -0000 Received: from localhost (localhost [127.0.0.1]) by bruce-guenter.dyndns.org ([192.168.1.3]); 06 May 2005 10:58:40 -0000 Received: from zak.futurequest.net ([127.0.0.1]) by localhost ([127.0.0.1]) with SMTP via TCP; 06 May 2005 10:58:40 -0000 Received: (qmail 2252 invoked from network); 6 May 2005 10:58:39 -0000 Received: from lsne-catv-dhcp-29-115.urbanet.ch (unknown [80.238.29.115]) by zak.futurequest.net ([69.5.6.152]) with SMTP via TCP; 06 May 2005 10:58:29 -0000 Received: from mail.datavalet.com (80.238.29.115) by 80.238.29.115 (fairwayv.4) with SMTP id <09166i58p> (Authid: 3811297); Fri, 06 May 2005 10:52:01 -0100 Reply-To: "chianfong cuthbert" From: "chianfong cuthbert" To: cvs@bruce-guenter.dyndns.org Cc: rait@bruce-guenter.dyndns.org Subject: Re: We will help you refinance your home. Date: Fri, 06 May 2005 15:55:01 +0400 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="--651790_269334.01570" Content-Length: 636 Lines: 22 ----651790_269334.01570 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: text/html Hello,

You have qualified for the lowest rate in years.
You could get over $400,000 for as little as $500 a month.
Low rates are fixed no matter what.

Please visit the link below to verify your information:
Approval Form

Best Regards,
chianfong cuthbert, Account Manager
Reynolds Associates, LLC

--------------------
if you received this in error: re-m0-ve ----651790_269334.01570-- mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_with_8bits.eml000066400000000000000000001070271436372131700313110ustar00rootroot00000000000000Recieved: from nahou-mscnx06p.corp.enron.com ([192.168.110.237]) by NAHOU-MSMBX07V.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Wed, 5 Dec 2001 02:00:07 -0600 Received: from corp.enron.com ([192.168.110.226]) by nahou-mscnx06p.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Wed, 5 Dec 2001 02:00:19 -0600 Received: from mailman.enron.com (unverified) by corp.enron.com (Content Technologies SMTPRS 4.2.1) with ESMTP id for ; Wed, 5 Dec 2001 02:00:03 -0600 Received: from mail2.provantage.com (adsl-64-108-84-28.dsl.akrnoh.ameritech.net [64.108.84.28]) by mailman.enron.com (8.11.4/8.11.4/corp-1.06) with ESMTP id fB57xSl15666 for ; Wed, 5 Dec 2001 01:59:29 -0600 (CST) Message-Id: <200112050759.fB57xSl15666@mailman.enron.com> Received: from aaa (W3NEW [65.192.161.22]) by mail2.provantage.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id XBHNSC17; Tue, 4 Dec 2001 19:27:33 -0500 Date: Tue, 04 Dec 2001 17:11:25 -0459 MIME-Version: 1.0 X-Mailer: J4L-GFIMailer X-Expid: jajenardmeremesyi To: jeff_dasovich@enron.com Subject: The Original Advantage #e13011 Reply-To: announcements@provantage.com X-Priority: 3 X-JMSavedFile: D:\HTML Mailer\Outbound 29457673512957792\mail43379.eml Sender: "announcements@provantage.com" From: "announcements@provantage.com" Content-Transfer-Encoding: 8bits Content-Type: text/html; charset="ISO-8859-1" Return-Path: announcements@provantage.com PROVANTAGE.COM : The Original Advantage


December 04, 2001

Can't read this email? Click here

Issue#: e13011

To unsubscribe from the 
Original Advantage Click here
(Do Not Reply to this email)

PROVANTAGE Customer: jeff_dasovich@enron.com

Holiday Gift Ideas for the Computer Professional!
11Mbps Wireless Cable/DSL Router
By Belkin
The Belkin Wireless Cable/DSL Gateway Router lets you share files and a broadband Internet connection among all your computers-without using cables. It's ...More
  $201.42

Nostromo n45 Dual Analog USB Gamepad
By Belkin
The Nostromo n45 USB game pad's advanced ergonomic design, dual analog and USB-compatibility make the n45 innovative PC game pad to hit the market in years. ...More
  $12.31

New!

Plus! for Windows XP
By Microsoft
Personalize your computer experience like never before.
Built exclusively to take advantage of the power of Windows XP, MS Plus! delivers exciting ...More
  $33.47

iPAQ H3670 Color Pocket PC
By Compaq
You want to do more with life? The iPAQ Pocket PC H3670 is designed to ride along on the voyage of life-in your pocket or mounted to your mountain bike. ...More
  $465.50

FireWire Hub 6-Port
By IOGEAR
IOGEAR's FireWire hubs provide 1394a compliant ports that support data transfer rates of 100, 200 and 400 Mbps (megabits per second), and automatically ...More
  $60.09

HomeConnect 10/100 Mbps Dual Speed Ethernet 5-Port
By 3Com
Share an Internet connection among several computers (Your Internet service provider may charge additional fees.). Surf Web sites, send e-mail, download ...More
  $41.76

New!

Links 2001 Expansion Pack Volume 1
By Microsoft
Join PGA Tour pros Mike Weir & Keith Clearwater on 4 new courses designed for Links 2001:
  • The Canyons Course at Bighorn, Thanksgiving Point ...More
  •   $20.93

    Mavica CD1000 Digital Cam 12Bit 2.1 Pixel 3" CD-R
    By Sony
    Start with a high capacity, 156 MB 3" CD-R plus a high resolution, 2.1 megapixel image sensor. Attach it to a high-powered 52mm 10x optical zoom lens and ...More
      $908.56

    Wireless Bluetooth PC Card
    By 3Com
    Personal Connections - Instantly
    For spontaneous connections between your notebook PC and other Bluetooth devices, as well as "light" network ...More
      $109.31

    MultiSync LCD1830 18in LCD Flat Panel Display
    By NEC/Mitsubishi
    For users who need superior image quality in a small space, the MultiSync LCD Series monitors deliver bright, sharp screen performance in a slim, lightweight ...More
      $833.05

    New!

    MechCommander 2
    By Microsoft
    Take control of an entire company of the most fearsome military machines in history - BattleMechs!
    As a MechCommander, you command a unit of ...More
      $24.02

    DSP-500 Digitally-Enhanced USB Gaming/Multimedia
    By Plantronics
    Plantronics' DSP-500 digitally-enhanced gaming/multimedia headset with full-range stereo sound. Perfect for multimedia applications such as games, CDs ...More
      $78.99

    RipGo! Handheld 4X6 Mini USB CD Burner/MP3 Player
    By Imation
    Whether you're a music enthusiast or a mobile business professional, the Imation RipGO! device will satisfy the creative urges of your imagination. Designed ...More
      $369.96

    CD-RW Drive 16X/10X/40X USB 2.0 Drive w/USB 2.0
    By IOGEAR
    Drive. Unlock the power of the new Hi-Speed USB 2.0. IOGEAR's IMPULSE Drive. Burns at a blazing 16x speed, allowing you to create CDs faster than ever ...More
      $188.54

    Spressa CRX175A-A1 Drive 24x/10x/40x Int EIDE
    By Sony
    Receive a $30 rebate direct from Sony on SNYC97M purchases between 10/01/01 and 12/31/01. ... More
      $145.46

    Digital Voice Recorder w/No Software
    By Sony
    Features Include
  • World's first memory stick Digital voice recorder
  • Uses removable MS (memory stick)
  • Recording time: 63 min (SP)/131 min ...More
  •   $195.68

     
     

    Web Address: www.PROVANTAGE.com 
     Toll Free: 800-336-1166     Fax: 330-494-5260     email: sales@provantage.com


    Privacy Policy
    | Terms & Conditions | FREE Catalog

    ©2001 PROVANTAGE Corporation, 7249 Whipple Ave. NW, North Canton, OH 44720

    Products, prices, terms, conditions, or offers may change at any time. Company and/or product names are generally trademarks, or registered trademarks of their respective companies. Some promotional text may be copyrighted by the product's manufacturer. 
    The Original Advantage promotional email is delivered only to customers of PROVANTAGE Corporation. PROVANTAGE customers have purchased products in the past and submitted their email address as part of the checkout process. Or, customers have entered their name in the "Add to Email List" box on the PROVANTAGE.com home page. Any customer may unsubscribe from the list at any time by going to http://www.provantage.com/unsubscribe.htm. The email address is permanently removed from additional promotional electronic mailings, and will not be reactivated unless requested by the customer.  

    BizRate Customer Certified (GOLD) Site

    mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_with_semi_colon.eml000066400000000000000000000202351436372131700324020ustar00rootroot00000000000000Return-Path: Delivered-To: cvs@bruce-guenter.dyndns.org Received: (qmail 25055 invoked from network); 30 Jun 2005 03:57:11 -0000 Received: from localhost (localhost [127.0.0.1]) by bruce-guenter.dyndns.org ([192.168.1.3]); 30 Jun 2005 03:57:11 -0000 Received: from zak.futurequest.net ([127.0.0.1]) by localhost ([127.0.0.1]) with SMTP via TCP; 30 Jun 2005 03:57:11 -0000 Received: (qmail 20286 invoked from network); 30 Jun 2005 03:57:10 -0000 Received: from mx-host.dot.tk (unknown [220.173.239.48]) by zak.futurequest.net ([69.5.6.152]) with ESMTP via TCP; 30 Jun 2005 03:57:08 -0000 from: "Shelby" To: Subject: Attention Date: Wed, 29 Jun 2005 22:57:10 -0600 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----26473166335893217" X-Mailer: Microsoft Office Outlook, Build 11.0.5510 Thread-Index: AcT9+CUlRgRKMiKZSj+BjT+PHEf8rQ== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Content-Length: 7044 Lines: 244 This is a multi-part message in MIME format. ------26473166335893217 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Dear Homeowner, You have been pre-approved for a $402,000 Home Loan at a 3.45% Fixed Rate. This offer is being extended to you unconditionally and your credit is in no way a factor. To take Advantage of this Limited Time opportunity all we ask is that you visit our Website and complete the 1 minute post Approval Form. Enter Here Sincerely, Esteban Tanner Regional CEO Tuuuuurn oooooff notiiificatiiiiions heeeeeeere. ------26473166335893217 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable;

    Dear Homeowner,

     

    You have been pre-approved for a $402,000 Home Loan at a 3.45% Fixed Rate.

    This offer is being extended to you unconditionally and your credit is in no way a factor.

     

    To take Advantage of this Limited Time opportunity all

    we ask is that you visit our Website and complete

    the 1 minute post Approval Form.

     

    Enter Here

     

    Sincerely,

     

    Esteban Tanner

    Regional CEO

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Tuuuuurn oooooff notiiificatiiiiions heeeeeeere.

    ------26473166335893217-- mail-2.8.1/spec/fixtures/emails/error_emails/content_transfer_encoding_x_uuencode.eml000066400000000000000000000100331436372131700313510ustar00rootroot00000000000000Received: from nahou-mscnx06p.corp.enron.com ([192.168.110.237]) by napdx-msmbx01v.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Thu, 10 Jan 2002 14:12:53 -0800 Received: from NAHOU-MSMSW06P.corp.enron.com ([192.168.110.228]) by nahou-mscnx06p.corp.enron.com with Microsoft SMTPSVC(5.0.2195.2966); Thu, 10 Jan 2002 16:12:52 -0600 Received: from mailman.enron.com (unverified) by NAHOU-MSMSW06P.corp.enron.com (Content Technologies SMTPRS 4.2.5) with ESMTP id ; Thu, 10 Jan 2002 16:12:47 -0600 Received: from tblexch01.transmission.bpa.gov (int.transmission.bpa.gov [206.137.58.133] (may be forged)) by mailman.enron.com (8.11.4/8.11.4/corp-1.06) with ESMTP id g0AMCB920856; Thu, 10 Jan 2002 16:12:11 -0600 (CST) Received: from TBLLIST1 ([206.137.58.134]) by tblexch01.transmission.bpa.gov with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21) id CRWWC3K1; Thu, 10 Jan 2002 14:11:55 -0800 Received: from LIST.TRANSMISSION.BPA.GOV by LIST.TRANSMISSION.BPA.GOV (LISTSERV-TCP/IP release 1.8c) with spool id 2458 for RRGA-L@LIST.TRANSMISSION.BPA.GOV; Thu, 10 Jan 2002 14:13:50 -0800 Received: from [207.202.136.216] (ip136.r2.d.pdx.nwlink.com [207.202.136.136]) by comet.pacifier.com (8.11.2/8.11.1) with ESMTP id g0ALxLX06696; Thu, 10 Jan 2002 13:59:21 -0800 (PST) Mime-Version: 1.0 X-Sender: lpeters@mail.pacifier.com References: <1168BAF252B7D41194810001028D743108913C@SERVER> Content-Type: multipart/mixed; boundary="============_-1201422494==_============" Message-ID: Date: Thu, 10 Jan 2002 13:59:53 -0800 Sender: RTO West Regional Representatives Group From: "Lon L. Peters" Subject: PGP Comments on RTO West Release of Dec. 14 Comments: cc: ltopaz@gcpud.org, gary.zarker@ci.seattle.wa.us, dgodard@gcpud.org, wdobbins@dcpud.org, drobinson@cowlitzpud.org, bgeddes@popud.com, "Culbertson, Tim" , kknitte@gcpud.org, paula.green@ci.seattle.wa.us, jim.harding@ci.seattle.wa.us, ghuhta@cowlitzpud.org, dosborn@gcpud.org, jscheel@popud.com, jim.todd@ci.seattle.wa.us, CWAGERS@dcpud.org, ali.rodol@ci.seattle.wa.us, kevin.clark@ci.seattle.wa.us, bessex@cowlitzpud.org, Cindy.Wright@ci.seattle.wa.us, "Juj, Hardev" , "Conger, Kurt" , "Kindley, Ray" To: RRGA-L@LIST.RTOWEST.ORG In-Reply-To: <1168BAF252B7D41194810001028D743108913C@SERVER> Return-Path: owner-rrga-l@list.rtowest.org --============_-1201422494==_============ Content-Type: text/plain; charset="us-ascii" ; format="flowed" Attached are the comments of the Public Generating Pool. -- _________________________________ Lon L. Peters Northwest Economic Research, Inc. 6765 S.W. Preslynn Drive Portland, Oregon 97225-2668 503-203-1539 (voice) 503-203-1569 (fax) 503-709-5942 (mobile) lpeters@pacifier.com NOTICE: This communication and its attachments, if any, may contain sensitive, privileged, or other confidential information. If you are not the intended recipient or believe that you have received this communication in error, please notify the sender of this communication and delete the copy you received from all storage devices. In addition, please do not print, copy, retransmit, forward, disseminate, or otherwise use this communication or its attachments, if any. Thank you. --============_-1201422494==_============ Content-Id: Content-Type: application/msword; name="PGP_Cmts_on_12-14-01_Pkg.doc" ; x-mac-type="5738424E" ; x-mac-creator="4D535744" Content-Disposition: attachment; filename="PGP_Cmts_on_12-14-01_Pkg.doc" ; modification-date="Thu, 10 Jan 2002 13:58:10 -0800" Content-Transfer-Encoding: x-uuencode --============_-1201422494==_============-- mail-2.8.1/spec/fixtures/emails/error_emails/empty_group_lists.eml000066400000000000000000000257301436372131700255110ustar00rootroot00000000000000Return-Path: Received: from murder ([unix socket]) by i.aaa.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-6.fc4) with LMTPA; Thu, 03 Dec 2009 10:50:45 -0800 X-Sieve: CMU Sieve 2.2 Received: from smtp.aaa.org (unknown [10.1.1.254]) by i.aaa.net (Postfix) with ESMTP id B789577FFC for ; Thu, 3 Dec 2009 10:50:44 -0800 (PST) Received: from imr-f9b5566049f9cb01.prolexic.com (unknown [10.2.2.254]) by smtp.aaa.org (Postfix) with ESMTP id 6B026D64546 for ; Thu, 3 Dec 2009 12:08:32 -0800 (PST) Received: from web82107.mail.mud.yahoo.com (web82107.mail.mud.yahoo.com [209.191.84.220]) by imr-f9b5566049f9cb01.prolexic.com (Postfix) with SMTP id 6B5392BA0459 for ; Thu, 3 Dec 2009 10:50:23 -0800 (PST) Received: (qmail 85490 invoked by uid 60001); 3 Dec 2009 18:50:22 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sbcglobal.net; s=s1024; t=1259866222; bh=aBaCpZTcwSmyoRxhnNZNc5KV/Eb3zHvR3BG0svTu0C0=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type; b=cREZCCsrtGfOYR9ckj97DV792GZUX/4Hktzlm5+WBuxdD8Q4XpjRz7dZ1Rei9JOKH8gseoE6KqujBA7EulWGx/XPX5TlDxgO8c2Vk3ae/Qeh38bDJ8MZXRc3dU1w+IMykQyU+qfFKHjkS1sTE7qcmheL1JsTs+BAXtyyqJL+J+4= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=sbcglobal.net; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type; b=nvmIZcXhl5ZMIwmDabz/TSUlgtHH5VdCGrTn1U6/zkGM1pZvwJgq/BMbY+5o+mwlMz78DrUT9TJwfx48JDz8j4swqWh1dlEfztr4S18hgoVt7RqeuIxGOfOEpa6jlzbgE04EQcKy9ePZsSgOv97IH1Oh8HU7MxPUj1KO9NaKsTA=; Message-ID: <203751.85280.qm@web82107.mail.mud.yahoo.com> X-YMail-OSG: M3VWGGoVM1mRrN0VVqOo_OuQD_g7jcvHWnqhUlpmVpXhEVZvd0t2zfR8Zvl5BY34dERYPAO_SdtSjPrdGHXgu8LQ7s1z74yCasGWj5jLvgVb.l8helkzU2RuUVfjxzO5AxztzNz1gt0nMG0iY4LrYoHWj1fvC6iduhm_H7LRUzBa5MezeY8soTyY1i0ugmXCgsAYu3etOBvYfwqnNmJmRBBgrgu7LB5aXqiQFTWhxKirD7cQrygLK3QPv7r4utOXt2viJDLFBgITADv.ZMOV5HL7VexNpvTIgDDxfYhDLy8F.h8nTquqIYSUUv5eMZUSbEml.QvSrtj5tjuryeWcIFTL6bHTwDBKNq_0gcEZWWbF_g6XiTjcGPVNDlVXVzni3DMOlt8_cscWGy95q_y2ArbGRrJLO5.0OQPdi6uxNIN.qXGwlijACJTlnpd1_k._CkT5_ivRiof0WAcmszBifAA8PLImnre40_vLQfGQN3cN0QfyYgv_dgVaXBhwkeuBfnthQugsAUbBcifuS7ymi37vSSTYpJ.nuHinkBsm8fVBr3FXNGZXB.YtpcxSSbvhimTtoZviodhD7zG2a1oE.X0GUT6FmsnUwVZPZkw0n_17m9.SSe8Qok8YXc9xfTKJyQAtn2yoMrS5.zMMhoQ8h26dmiXyv2N7V5SjOBYCc7ynqi7H6yPWe7FHQls_arY8vzF8xiC1THpiXJkiN4JHScNPk8aVxwY8L278d3RwSdTKa6CjDw1eIxu9XanW.eB0x3t6_VmuNcDRjhTG022kURXkA6x.UuCrKdP0eiVnSXFI0KiI9Xzhg1AMoiMPZRYDQneEPkgtMw.PJePhfVrOo.svKrGzuk5dG6PDHIqTSmd8MwlhZ56eTsDrakeo3ooVoRW_4oi9vyc7LVaJ32shn5mD5RwNyKhPHvzCAVCc3tc_AwkNqoEehTKOaxWuZc_jVuVB4bjJZsXPGeDqh FuKqBNQHUzr8v6AeX3grpz3M_0jE2qPES2GbJEItyat4WrVzA4SerkByWZHS9xNj.j_xbqdnVznbAdftUA4GFjQMZZql1KgFqrOHnhNkp6Z1QO7IQjCDaVwTATJ5h5uEFbKdmr1QPmmFNbFQub.HwmfikVgWNBn90wUKS2CsJf2IEOHSOicDzIMoC6PWzjCXGGZHZMRcSmtaIXkZ4UYELtiQQCBRgZWh7mhV6wjjbxLE0xv5.lKPSsLzql8COylkhrnoVF2jckLWroGXHsFtEQ5qD2nhDmN.ZlJJ01c1BdE2rGCKbKNfh9qvqXYA0kt9TsfO.H_sp7NWKZmFVnVrGbszkg6xXs4Bo1ITBjxzITVenK_WwO_YPXUV2cHNAXFP88bhiRvKSS31GxaT12QR4RHrWqe0ZjkgfoO.jK9ysUx3NnVSmiDzmnENJAoYbO1Sf8JDVj5yDSCyMxvL4iI7xUBHIzq.lpr6yk1IRkE5074pxlITkHejyzljPbzIUF6OWg95Edlro_QjIQHGeEE1EzNE_JrscrjDYX6mW40CCLFu7ImZVuFmwxC11sC5MIj4KUp8TYSNj2n0WVcTt4jXzSOB4eOlRxtE9dDo3wACeEXc_dzD2BjIOpfUYnIUw2xgRN7wFpd4z6EQ2g3eEv6ny7x9sd0SEh36xG0ZC0juI7Qp0Rj6_1A_YBiIY0AODUdtV1vVuWLTq82Fj0xOhH7I5c03ZYRcJoQBpuc4GDnU.wCi3n.eb1_oHaocDz0E6b6UkpGBB.2d1SXx6BOVu1DEdm6KSg3BUeDld.GzUOUKtWbzyOYdPdedcTa4gljnujUb5tCkjpgEmz_iP0GCs7SYbTcj6AIQxAliexrcdQeNxqxS7hlNOwQmsSGyjufJ7Xrq_NnTp8cWCNUhgmtb4r_gcUjOnPJoz.YpZ8asjZ.uZOgHXpmPIsZL1gozfp_rqYzkx3NYJ8S47IMD84Fa3iVco5SWXVlUx pF_rRHgvkNQtdMaVU5YZdEGr6OlG.CTrAlZa0IoZ0HgFtB_Lg_ Received: from [41.222.192.69] by web82107.mail.mud.yahoo.com via HTTP; Thu, 03 Dec 2009 10:50:22 PST X-Mailer: YahooMailClassic/8.1.6 YahooMailWebService/0.8.100.260964 Date: Thu, 3 Dec 2009 10:50:22 -0800 (PST) From: Cecil Edwards Reply-To: western.uniontransfer1@hotmail.fr Subject: Western Union Swift Money Transfer To: undisclosed recipients: ; MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-2052022825-1259866222=:85280" X-CSI-MailScanner-Information: Please contact the ISP for more information X-CSI-MailScanner: Found to be clean X-CSI-MailScanner-SpamCheck: spam, ORDB-RBL X-CSI-MailScanner-From: ceciledwards@sbcglobal.net X-Spam-Status: Yes --0-2052022825-1259866222=:85280 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Attention Beneficiary: =A0 This is to officially informed you that we have concluded arrangements to e= ffect your payment of $1,500,000.00 United States Dollars through WESTERN U= NION Swift Money transfer services today, but the maximum amount you will b= e receiving every day starting from tomorrow is $5,000.00 as reflected in o= ur transfer system daily until the funds is completely transferred. =A0 This special arrangement is being used to avoid all scrupulous demands by b= oth the states and federal authorities that have previously delayed your pa= yment till date; we shall need your maximum co-operation to ensure that str= ictness and confidence is maintained to avoid any further delays.You are to= discard any request asking you to send money to any agency such as courier= company,Bank and Security Agency as there are no such and any money commit= ted their will be regret, so be wise.=20 =A0 Please contact the Accredited WESTERN UNION Agent for the details of your f= irst payment of $5,000 United States Dollars and reconfirm your correct det= ails that you will like the first transfer to be program with such as Recei= vers Name, destination where you will like the transfer to be send to and y= our cell phone number for urgent communication if the need arise. Fill your details below for reference purposes: *NAME OF CUSTOMER: ......... *ADDRESS: .......... *COUNTRY: ................. *TEL: ..................... *OCCUPATION: .............. =A0 Remember your obligation to secure an International Remittance Form as stat= ed in United Nation act of (FRT209) that will help build and renew your tra= nsfer file for record keeping as a way of checkmating the present Economics= crisis situations. Contact the below Electronic Transfer unit of WESTERN UNION for immediate p= rograming of your first transfer: =A0 Name: Rev.John Ntepe Mobile:+229 97292685 Email: (western.union1891@live.fr) or (westerrnunion_2@sify.com) =A0 Regards. Thanks and God Bless. Mrs.Cecil Edward --=20 Filter4: This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. --0-2052022825-1259866222=:85280 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable
    Attention = Beneficiary:
     
    This is to officially informed you that we have concluded= arrangements to effect your payment of $1,500,000.00 United States Dollars= through WESTERN UNION Swift Money transfer services today, but the maximum= amount you will be receiving every day starting from tomorrow is $5,000.00= as reflected in our transfer system daily until the funds is completely tr= ansferred.
     
    This special arrangement is being used to avoid all scrupul= ous demands by both the states and federal authorities that have previously= delayed your payment till date; we shall need your maximum co-operation to ensure that strictne= ss and confidence is maintained to avoid any further delays.You are to disc= ard any request asking you to send money to any agency such as courier comp= any,Bank and Security Agency as there are no such and any money committed t= heir will be regret, so be wise.
     
    Please contact the Accredited WESTER= N UNION Agent for the details of your first payment of $5,000 United States= Dollars and reconfirm your correct details that you will like the first tr= ansfer to be program with such as Receivers Name, destination where you wil= l like the transfer to be send to and your cell phone number for urgent com= munication if the need arise.
    Fill your details below for reference purposes:
    *NAME OF CUSTOMER: .........
    *ADDRESS: ..........
    *COUNTRY: ......= ............
    *TEL: .....................
    *OCCUPATION: .............. 
    Reme= mber your obligation to secure an International Remittance Form as stated i= n United Nation act of (FRT209) that will help build and renew your transfe= r file for record keeping as a way of checkmating the present Economics cri= sis situations.
    Contact the below Electronic Transfer unit of WESTERN UNION for immediate programing o= f your first transfer:
     
    Name: Rev.John Ntepe

    Mobile:+229 97292685
    Email= : (western.union1891@live.fr) or (westerrnunion_2@sify.com)

     
    Regards.
    Thanks and God Bless.

    Mrs.Cecil Edward


    --=20
    This message has been scanned for viruses and
    dangerous content by MailScanner, and is
    believed to be clean. --0-2052022825-1259866222=:85280-- mail-2.8.1/spec/fixtures/emails/error_emails/empty_in_reply_to.eml000066400000000000000000000045221436372131700254560ustar00rootroot00000000000000Return-path: Envelope-to: abuser@r.ru Delivery-date: Sat, 19 Sep 2009 21:41:40 +0400 Received: from mail-fx0-f215.google.com ([209.85.220.215]:39047) by mail.rg.com with esmtp id 1Mp3wA-0007kA-Ic for ; Sat, 19 Sep 2009 21:41:30 +0400 Received: by fxm11 with SMTP id 11so1412272fxm.15 for ; Sat, 19 Sep 2009 10:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date :message-id:mime-version:content-type:x-priority:x-msmail-priority :x-mailer:importance:x-mimeole:in-reply-to; bh=U4LmZ2XrYxpE2gzziKYLSJXvmTsl0JSdrp4OYcIw2xw=; b=N4ZFNsnhqgG0qILwgjv0Sh0qKgSR+A5hMn60yxtSlACUDq/xQ/52pJkCuMChX0Pzxo HaRYdiAsxyzlzmSStwtM/fAHZSNrXD0pLpeQOCi1r8ZSyQ6mKb4WgO56FFNOjCA0rLl8 NOelymNmCIYTwuYz5Dd0PthnWL0YZPU+YUEHU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:mime-version:content-type :x-priority:x-msmail-priority:x-mailer:importance:x-mimeole :in-reply-to; b=ZTs05s6OpCmZp0GWYqGIv8xGM+AmM7+QL6SdaR45KgwCcN8sJH0SB4PI4QMFSW3+ZX IdYVUGjqer/bEz7POPS8FOTCZW1QTkRcTHqVEFezAmotlc0VfLVSnnW9oRpzJ/UFQUWM +Wn0vcObiGmrUPUJWWiNgBvuRnrJHk+nICCQI= Received: by 10.86.240.9 with SMTP id n9mr2799028fgh.70.1253375382709; Sat, 19 Sep 2009 08:49:42 -0700 (PDT) Return-Path: Received: from articondell (ppp85-140-104-88.pppoe.mtu-net.ru [85.140.104.88]) by mx.google.com with ESMTPS id e11sm2485072fga.21.2009.09.19.08.49.39 (version=SSLv3 cipher=RC4-MD5); Sat, 19 Sep 2009 08:49:40 -0700 (PDT) From: "Andrey Kuznetsov" To: Subject: illegal copy of our patient education software Date: Sat, 19 Sep 2009 19:49:36 +0400 Message-ID: MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_000A_01CA3962.51E52370" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.4024 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 In-Reply-To: Recivied-SPF: (invalid) RSpam-Score: 40 List-Id: abuser@rg.com Mailing List Reply-To: ak@g.com mail-2.8.1/spec/fixtures/emails/error_emails/encoding_madness.eml000066400000000000000000000034101436372131700252100ustar00rootroot00000000000000Delivered-To: e-f5f4@app.ar-example.com Received: by 10.2.1.1 with SMTP id p21cs62610wem; Wed, 22 Sep 2010 00:30:55 -0700 (PDT) Received: by 10.15.2.1 with SMTP id p24mr499372ybh.380.1285140655013; Wed, 22 Sep 2010 00:30:55 -0700 (PDT) Return-Path: Received: from aquila.el-example.org ([174.1.8.2]) by mx.google.com with ESMTP id a6si11272839ybo.18.2010.09.22.00.30.54; Wed, 22 Sep 2010 00:30:54 -0700 (PDT) Received-SPF: neutral (google.com: 174.1.8.2 is neither permitted nor denied by best guess record for domain of production@aquila.el-example.org) client-ip=174.1.8.2; Authentication-Results: mx.google.com; spf=neutral (google.com: 174.1.8.2 is neither permitted nor denied by best guess record for domain of production@aquila.el-example.org) smtp.mail=production@aquila.el-example.org Received: from aquila.el-example.org (localhost [127.0.0.1]) by aquila.el-example.org (8.14.2/8.14.2) with ESMTP id o8M7UrfD018673 for ; Wed, 22 Sep 2010 02:30:54 -0500 (CDT) (envelope-from production@aquila.el-example.org) Received: (from production@localhost) by aquila.el-example.org (8.14.2/8.14.2/Submit) id o8M7Urh3018672; Wed, 22 Sep 2010 02:30:53 -0500 (CDT) (envelope-from production) Message-Id: <201009220730.o8M7Urh3018672@aquila.el-example.org> MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-Mailer: MIME::Lite 3.027 (F2.74; T1.28; A2.04; B3.07; Q3.07) Date: Wed, 22 Sep 2010 02:30:53 -0500 From: no-reply@crm.el-example.org To: e-f5f4@app.ar-example.com Reply-To: "KLAUS- HÄNSCHEL" <> Subject: eBay Bid - 2008 Ford Super Duty F-350 DRW King Ranch Crew Cab 4x4 (156) - Stock# XXXX Body Textmail-2.8.1/spec/fixtures/emails/error_emails/header_fields_with_empty_values.eml000066400000000000000000000025301436372131700303200ustar00rootroot00000000000000Received: from mx01.medieveven.no (192.168.42.42) by epost.vartland.no (192.168.73.7) with Microsoft SMTP Server id 8.1.393.1; Fri, 30 Oct 2009 20:08:07 +0100 Received: from woodward.joyent.us ([8.12.42.230]) by mx01.medieveven.no with ESMTP; 30 Oct 2009 20:11:23 +0100 Received: from [10.0.0.5] (ti0083a340-0282.bb.online.no [88.89.59.28]) by woodward.joyent.us (Postfix) with ESMTPSA id EC35240C85 for ; Fri, 30 Oct 2009 19:07:44 +0000 (GMT) From: =?iso-8859-1?Q?J=F8rn_St=F8ylen?= To: AF Test Date: Fri, 30 Oct 2009 20:07:42 +0100 Subject: Testmail Thread-Topic: Testmail Thread-Index: AcpZlFLF/Y9EfcC0QZKKEuUFm2Snqw== Message-ID: <4FDC124A-1FC4-4B29-8502-E459BD9AB397@prikkprikkprikk.no> Accept-Language: nb-NO X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Exchange-Organization-AuthSource: epost.vartland.no X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ironport-anti-spam-filtered: true x-ironport-av: E=Sophos;i="4.44,655,1249250400"; d="scan'208";a="2439461" x-ironport-anti-spam-result: AvMBAPfV6koIDCrmhWdsb2JhbACbVgEBAQoLChoDxH2EPQQ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 -- J=F8rn St=F8ylen -- http://www.prikkprikkprikk.no 924 38 051 -- jorn@prikkprikkprikk.no mail-2.8.1/spec/fixtures/emails/error_emails/invalid_subject_characters.eml000066400000000000000000000003601436372131700272550ustar00rootroot00000000000000From: "=?Windows-1252?B?Rm9ybWHn428gRnJlbmV0aWtwb2xpcw==?=" To: martin@internet.ao, iris@internet.ao, support@maxnet.ao Subject: Formao FrenetikPolis: Mega Campanha Final Vero | Cursos de Setembro TEST mail-2.8.1/spec/fixtures/emails/error_emails/missing_body.eml000066400000000000000000000007631436372131700244060ustar00rootroot00000000000000Message-ID: <001301c17797$9cd0ef30$a3ab620c@vaio> From: "SCS_2" To: Subject: REDACTED Date: Tue, 27 Nov 2001 15:02:35 -0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_000F_01C17754.8C3CAF30" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 Return-Path: redacted@attglobal.net mail-2.8.1/spec/fixtures/emails/error_emails/missing_content_disposition.eml000066400000000000000000000044421436372131700275450ustar00rootroot00000000000000Message-Id: <200201221435.g0MEZP927213@mailman.enron.com> Content-Type: multipart/related; boundary="_----------=_10117101281980" MIME-Version: 1.0 Date: Tue, 22 Jan 2002 14:35:28 UT Subject: Redacted To: redacted@example.com From: redacted@example.com Return-Path: redacted@example.com --_----------=_10117101281980 Content-Location: somefile.jpg Content-Transfer-Encoding: base64 Content-Type: image/jpg Content-Disposition: Date: Tue, 22 Jan 2002 14:35:28 UT X-Mailer: MIME-Version: ICAKIApUaGFuayB5b3UgZm9yIHVzaW5nIG91ciBhdXRvbWF0ZWQgc2VsZiBzZXJ2aWNlIHBhc3N3 b3JkIHJlc2V0IG9wdGlvbi4gICAgCiAKVGhlIHVzZXIgaWQgYW5kIHBhc3N3b3JkIGluIFNBUCAo QXBvbGxvIFByb2R1Y3Rpb24gYW5kIEhSIFByb2R1Y3Rpb24pLCBlSFJvbmxpbmUsIGlCdXlpdCBh bmQgaVBheWl0IGFyZSBhbGwgc3luY2hyb25pemVkLiAgV2hlbiB5b3UgcmVzZXQgeW91ciBwYXNz d29yZCBpbiBlSFJvbmxpbmUsIGl0IGF1dG9tYXRpY2FsbHkgc3luY2hyb25pemVzIHRoZSBwYXNz d29yZCBpbiB0aGUgb3RoZXIgc3lzdGVtcy4gIAogClBsZWFzZSBmb2xsb3cgdGhlIHN0ZXBzIHRv IHJlc2V0IGFuZCBzeW5jaHJvbml6ZSB5b3VyIHBhc3N3b3Jkcy4KIAoxLiAgICAgICAgR28gdG8g ZWhyb25saW5lLmVucm9uLmNvbQoyLiAgICAgICBDbGljayBvbiB0aGUgICBidXR0b24KMy4gICAg ICAgRW50ZXIgeW91ciBVc2VyIElkIChTQVAgUGVyc29ubmVsIE51bWJlcikgYW5kIHRlbXBvcmFy eSBwYXNzd29yZCAobG9jYXRlZCBhdCB0aGUgYm90dG9tIG9mIHRoaXMgZW1haWwpCjQuICAgICAg IFlvdSB3aWxsIHRoZW4gYmUgYXNrZWQgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQKNS4gICAgICAg RW50ZXIgeW91ciBuZXcgcGFzc3dvcmQgdHdpY2UKNi4gICAgICAgT25jZSB5b3UgaGF2ZSBzdWNj ZXNzZnVsbHkgY2hhbmdlZCB5b3VyIHBhc3N3b3JkIGluIGVIUm9ubGluZSwgeW91IGhhdmUgc3lu Y2hyb25pemVkIHlvdXIgcGFzc3dvcmQgZm9yIFNBUCAoQXBvbGxvIFByb2R1Y3Rpb24gYW5kIEhS IFByb2R1Y3Rpb24pLCBlSFJvbmxpbmUsIGlCdXlpdCBhbmQgaVBheWl0CjcuICAgICAgIElmIHlv dSB3ZXJlIHRyeWluZyB0byBhY2Nlc3MgYW4gYXBwbGljYXRpb24gb3RoZXIgdGhhbiBlSFJvbmxp bmUsIGNsb3NlIGVIUm9ubGluZSBhbmQgcHJvY2VlZCB0byB0aGUgZGVzaXJlZCBhcHBsaWNhdGlv bi4gIFlvdSB3aWxsIG5vdyBiZSBhYmxlIHRvIGxvZyBpbiB3aXRoIHlvdXIgTkVXIHBhc3N3b3Jk LgogCiBUSElTIElTIEEgR0VORVJBVEVEIEVNQUlMIC0gRE8gTk9UIFJFUExZIQogCklGIFlPVSBO RUVEIEZVUlRIRVIgQVNTSVNUQU5DRSwgQ09OVEFDVCBUSEUgSVNDIEhFTFAgREVTSyBBVDogIDcx My0zNDUtNDcyNwogClRoZSBwYXNzd29yZCBmb3IgeW91ciBhY2NvdW50OiBQMDA1MDA1NTMgICBo YXMgYmVlbiByZXNldCB0bzogMTIyODIyNjYgIAogCkdvIHRvIGVIUm9ubGluZSBub3c6IGh0dHA6 Ly9laHJvbmxpbmUuZW5yb24uY29tIDxodHRwczovL2Vocm9ubGluZS5lbnJvbi5jb20vPiAgIAoK --_----------=_10117101281980-- mail-2.8.1/spec/fixtures/emails/error_emails/multiple_content_types.eml000066400000000000000000000011121436372131700265160ustar00rootroot00000000000000From: Subject: Redacted To: Message-ID: <105647271315.NCV17523@x263.net> MIME-version: 1.0 Content-Type: multipart/alternative; boundary="----_001_5973_47T00ZN9.15SY2428" Content-type: text/plain This is a multi-part message in MIME format. ------_001_5973_47T00ZN9.15SY2428 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7Bit foo ------_001_5973_47T00ZN9.15SY2428 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7Bit

    foo

    ------_001_5973_47T00ZN9.15SY2428-- mail-2.8.1/spec/fixtures/emails/error_emails/multiple_invalid_content_dispositions.eml000066400000000000000000000004731436372131700316200ustar00rootroot00000000000000From: Subject: Redacted To: Message-ID: <105647271315.NCV17523@x263.net> MIME-version: 1.0 Content-Type: text/html; charset=utf-8 Content-Disposition: =?utf-8?Q?invalid?= Content-Transfer-Encoding: quoted-printable Content-Disposition: =?utf-8?Q?invalid?=

    foo

    mail-2.8.1/spec/fixtures/emails/error_emails/multiple_references_with_one_invalid.eml000066400000000000000000000011571436372131700313540ustar00rootroot00000000000000From: Subject: Redacted To: Message-ID: <105647271315.NCV17523@x263.net> MIME-version: 1.0 Content-Type: multipart/alternative; boundary="----_001_5973_47T00ZN9.15SY2428" References: References: , This is a multi-part message in MIME format. ------_001_5973_47T00ZN9.15SY2428 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7Bit foo ------_001_5973_47T00ZN9.15SY2428 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7Bit

    foo

    ------_001_5973_47T00ZN9.15SY2428-- mail-2.8.1/spec/fixtures/emails/error_emails/must_supply_encoding.eml000066400000000000000000000013631436372131700261670ustar00rootroot00000000000000X-YMAIL-UMID: 1_132725_AEe3iGIAAGS4TOAfWQ3foSiBC54 X-Apparently-To: anyone@yahoo.com via 98.136.183.71; Sun, 14 Nov 2010 09:41:45 -0800 Message-Id: <201011141741.oAEHfiKs020181@app9.msg2u.net> MIME-Version: 1.0 Content-Transfer-Encoding: binary Content-Type: multipart/alternative; boundary="_----------=_128975650412616235" X-Mailer: MIME::Lite 3.020 (F2.73; T1.21; A1.77; B3.01; Q3.01) Date: Sun, 14 Nov 2010 17:41:44 +0000 From: Biz Phone Systems from EclipseMediaOnline�� To: anyone@YAHOO.COM Subject: Impress your clients with a business phone��� Reply-To: Biz Phone Systems from EclipseMediaOnline�� <44.41.17.14.11.2010.1139.1.328.1477949.614@reply.here2there-travelers-msgs.net> mail-2.8.1/spec/fixtures/emails/error_emails/new_line_in_to_header.eml000066400000000000000000000027501436372131700262160ustar00rootroot00000000000000Delivered-To: e-s-a-g-8718@app.ar.com Received: by 10.2.1.1 with SMTP id c60cs12954wel; Wed, 13 Oct 2010 07:44:39 -0700 (PDT) Received: by 10.15.1.1 with SMTP id f12mr1139775ybe.360.1286981078364; Wed, 13 Oct 2010 07:44:38 -0700 (PDT) Return-Path: Received: from services.travidiabamboo.com (services.travidiabamboo.com [72.21.1.1]) by mx.google.com with ESMTP id v33si16714378yba.88.2010.10.13.07.44.37; Wed, 13 Oct 2010 07:44:38 -0700 (PDT) Received-SPF: pass (google.com: domain of l@gcn-example.com designates 72.21.1.1 as permitted sender) client-ip=72.21.1.1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of l@gcn-example.com designates 72.21.1.1 as permitted sender) smtp.mail=l@gcn-example.com Received: from travidiabamboo.com (services [10.0.0.2]) by services.travidiabamboo.com (Postfix) with ESMTP id A532170702; Wed, 13 Oct 2010 07:53:04 -0700 (PDT) Date: Wed, 13 Oct 2010 07:53:04 -0700 From: l@gcn-example.com To: leads@sg.dc.com, sag@leads.gs.ry.com, sn@example-hotmail.com, e-s-a-g-8718@app.ar.com, jp@t-exmaple.com, cc@c-l-example.com Message-Id: <4cb5c7d0a3cce_120e..fdbed2b861958562@s.t-example.com.tmail> Subject: [Online Lead] Online Lead #1111111 Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 2010-10-13T07:53:04-09:00 ... (not important) ...mail-2.8.1/spec/fixtures/emails/error_emails/trademark_character_in_subject.eml000066400000000000000000000035771436372131700301210ustar00rootroot00000000000000Delivered-To: e-r-w-a-4462@app.ar.com Received: by 10.1.1.1 with SMTP id w10cs10896muo; Tue, 12 Oct 2010 13:20:24 -0700 (PDT) Received: by 10.2.1.5 with SMTP id bk15mr6105827qab.89.1286914824124; Tue, 12 Oct 2010 13:20:24 -0700 (PDT) Return-Path: Received: from mail.ga-example.com (mail.ga-example.com [64.1.2.3]) by mx.google.com with ESMTP id 13si112341247qcd.23.2010.10.12.13.20.23; Tue, 12 Oct 2010 13:20:24 -0700 (PDT) Received-SPF: neutral (google.com: 64.1.2.3 is neither permitted nor denied by best guess record for domain of j@yahoo-example.com) client-ip=64.1.2.3; Authentication-Results: mx.google.com; spf=neutral (google.com: 64.1.2.3 is neither permitted nor denied by best guess record for domain of j@yahoo-example.com) smtp.mail=j@yahoo-example.com X-MDAV-Processed: mail.ga-example.com, Tue, 12 Oct 2010 16:21:07 -0400 X-Spam-Processed: mail.ga-example.com, Tue, 12 Oct 2010 16:21:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on MAIL02.VD-example.com X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DATE_IN_PAST_03_06, FORGED_YAHOO_RCVD,INVALID_DATE,NO_RELAYS,SUBJECT_NEEDS_ENCODING shortcircuit=no autolearn=no version=3.2.5 Received: from GAWWW03 by ga-example.com (MDaemon PRO v11.0.3) with ESMTP id md50004804310.msg for ; Tue, 12 Oct 2010 16:21:05 -0400 X-MDRemoteIP: 192.168.254.73 X-Return-Path: j@yahoo-example.com X-Envelope-From: j@yahoo-example.com X-MDaemon-Deliver-To: e-r-w-a-4462@app.ar.com Date: Tue, 12 Oct 2010 16:21:05 H0500 Subject: GA.comô has a lead for you To: c@ra-example.com,e-r-w-a-4462@app.ar.com,leads@ga-example.com MIME-Version: 1.0 Content-type: text/plain; charset=iso-8859-1 From: j@yahoo-example.com Message-ID: Body Text - not importantmail-2.8.1/spec/fixtures/emails/error_emails/weird_to_header.eml000066400000000000000000000021301436372131700250320ustar00rootroot00000000000000Delivered-To: e-s-a-s-2200@app.ar.com Received: by 10.103.1.1 with SMTP id w10cs50835muo; Thu, 14 Oct 2010 20:25:16 -0700 (PDT) Received: by 10.150.205.4 with SMTP id c4mr736200ybg.26.1287113115711; Thu, 14 Oct 2010 20:25:15 -0700 (PDT) Return-Path: Received: from i.tp.host ([172.1.1.1]) by mx.google.com with ESMTP id s21si2123456.90.2010.10.14.20.25.15; Thu, 14 Oct 2010 20:25:15 -0700 (PDT) Received-SPF: neutral (google.com: 172.1.1.1 is neither permitted nor denied by best guess record for domain of anonymous@i.tp.host) client-ip=172.1.1.1; Authentication-Results: mx.google.com; spf=neutral (google.com: 172.1.1.1 is neither permitted nor denied by best guess record for domain of anonymous@i.tp.host) smtp.mail=anonymous@i.tp.host Received: (qmail 28454 invoked by uid 48); 14 Oct 2010 23:25:06 -0400 Date: 14 Oct 2010 23:25:06 -0400 Message-ID: <20101015032506.28448.qmail@i.tp.host> From: anonymous@i.tp.host To: , user-example@aol.com, e-s-a-s-2200@app.ar.com Subject: CONTACT: COMMENT: PAGE THEY WERE ON: mail-2.8.1/spec/fixtures/emails/mime_emails/000077500000000000000000000000001436372131700210115ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/mime_emails/email_with_similar_boundaries.eml000066400000000000000000000026651436372131700275760ustar00rootroot00000000000000Received: from xxxx.xxxxxxx.xxx (127.0.0.1) by xxxx.xxxxxxxx.xxx (127.0.01) with Microsoft SMTP Server id 11.1.111.1; Thu, 5 Apr 2012 01:01:01 -0700 Message-ID: To: Subject: Xxxxxx Date: Fri, 6 Apr 2012 01:01:01 +0000 From: Xxxxx X-Mailer: PHP/5.2.6 Content-Type: multipart/mixed; boundary="----=_NextPart_476c4fde88e507bb8028170e8cf47c73" MIME-Version: 1.0 ------=_NextPart_476c4fde88e507bb8028170e8cf47c73 Content-Type: multipart/alternative; boundary="----=_NextPart_476c4fde88e507bb8028170e8cf47c73_alt" ------=_NextPart_476c4fde88e507bb8028170e8cf47c73_alt Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Test ------=_NextPart_476c4fde88e507bb8028170e8cf47c73_alt Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit Test

    Test

    ------=_NextPart_476c4fde88e507bb8028170e8cf47c73_alt-- ------=_NextPart_476c4fde88e507bb8028170e8cf47c73 Content-Type: application/octetstream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="LOGO.png" Content-ID: SNIP ------=_NextPart_476c4fde88e507bb8028170e8cf47c73-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email11.eml000066400000000000000000000013131436372131700236100ustar00rootroot00000000000000From xxx@xxxx.com Wed Apr 27 14:15:31 2005 Mime-Version: 1.0 (Apple Message framework v619.2) To: "xxxxx@xxxxx" Message-Id: <416eaebec6d333ec6939eaf8a7d80724@xxxxx> Content-Type: multipart/alternative; boundary=Apple-Mail-5-1037861608 From: "xxxxx@xxxxx" Subject: worse when you use them. Date: Wed, 27 Apr 2005 14:15:31 -0700 --Apple-Mail-5-1037861608 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed XXXXX Xxxxx --Apple-Mail-5-1037861608 Content-Transfer-Encoding: 7bit Content-Type: text/enriched; charset=US-ASCII XXXXX Xxxxx --Apple-Mail-5-1037861608-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email12.eml000066400000000000000000000017301436372131700236140ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-13-196941151 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: Photo25.jpg Content-ID: Content-Disposition: inline jamisSqGSIb3DQEHAqCAMIjamisxCzAJBgUrDgMCGgUAMIAGCSqGSjamisEHAQAAoIIFSjCCBUYw ggQujamisQICBD++ukQwDQYJKojamisNAQEFBQAwMTELMAkGA1UEBhMCRjamisAKBgNVBAoTA1RE QzEUMBIGjamisxMLVERDIE9DRVMgQ0jamisNMDQwMjI5MTE1OTAxWhcNMDYwMjamisIyOTAxWjCB gDELMAkGA1UEjamisEsxKTAnBgNVBAoTIEjamisuIG9yZ2FuaXNhdG9yaXNrIHRpbjamisRuaW5= --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email2.eml000066400000000000000000000145661436372131700235460ustar00rootroot00000000000000From xxxxxxxxx.xxxxxxx@gmail.com Sun May 8 19:07:09 2005 Return-Path: X-Original-To: xxxxx@xxxxx.xxxxxxxxx.com Delivered-To: xxxxx@xxxxx.xxxxxxxxx.com Received: from localhost (localhost [127.0.0.1]) by xxxxx.xxxxxxxxx.com (Postfix) with ESMTP id 06C9DA98D for ; Sun, 8 May 2005 19:09:13 +0000 (GMT) Received: from xxxxx.xxxxxxxxx.com ([127.0.0.1]) by localhost (xxxxx.xxxxxxxxx.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 88783-08 for ; Sun, 8 May 2005 19:09:12 +0000 (GMT) Received: from xxxxxxx.xxxxxxxxx.com (xxxxxxx.xxxxxxxxx.com [69.36.39.150]) by xxxxx.xxxxxxxxx.com (Postfix) with ESMTP id 10D8BA960 for ; Sun, 8 May 2005 19:09:12 +0000 (GMT) Received: from zproxy.gmail.com (zproxy.gmail.com [64.233.162.199]) by xxxxxxx.xxxxxxxxx.com (Postfix) with ESMTP id 9EBC4148EAB for ; Sun, 8 May 2005 14:09:11 -0500 (CDT) Received: by zproxy.gmail.com with SMTP id 13so1233405nzp for ; Sun, 08 May 2005 12:09:11 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:references; b=cid1mzGEFa3gtRa06oSrrEYfKca2CTKu9sLMkWxjbvCsWMtp9RGEILjUz0L5RySdH5iO661LyNUoHRFQIa57bylAbXM3g2DTEIIKmuASDG3x3rIQ4sHAKpNxP7Pul+mgTaOKBv+spcH7af++QEJ36gHFXD2O/kx9RePs3JNf/K8= Received: by 10.36.10.16 with SMTP id 16mr1012493nzj; Sun, 08 May 2005 12:09:11 -0700 (PDT) Received: by 10.36.5.10 with HTTP; Sun, 8 May 2005 12:09:11 -0700 (PDT) Message-ID: Date: Sun, 8 May 2005 14:09:11 -0500 From: xxxxxxxxx xxxxxxx Reply-To: xxxxxxxxx xxxxxxx To: xxxxx xxxx Subject: Fwd: Signed email causes file attachments In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5028_7368284.1115579351471" References: ------=_Part_5028_7368284.1115579351471 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline We should not include these files or vcards as attachments. ---------- Forwarded message ---------- From: xxxxx xxxxxx Date: May 8, 2005 1:17 PM Subject: Signed email causes file attachments To: xxxxxxx@xxxxxxxxxx.com Hi, Just started to use my xxxxxxxx account (to set-up a GTD system, natch) and noticed that when I send content via email the signature/ certificate from my email account gets added as a file (e.g. "smime.p7s"). Obviously I can uncheck the signature option in the Mail compose window but how often will I remember to do that? Is there any way these kind of files could be ignored, e.g. via some sort of exclusions list? ------=_Part_5028_7368284.1115579351471 Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGFDCCAs0w ggI2oAMCAQICAw5c+TANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3VpbmcgQ0EwHhcNMDUwMzI5MDkzOTEwWhcNMDYwMzI5MDkzOTEwWjBCMR8wHQYDVQQD ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMR8wHQYJKoZIhvcNAQkBFhBzbWhhdW5jaEBtYWMuY29t MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn90dPsYS3LjfMY211OSYrDQLzwNYPlAL 7+/0XA+kdy8/rRnyEHFGwhNCDmg0B6pxC7z3xxJD/8GfCd+IYUUNUQV5m9MkxfP9pTVXZVIYLaBw o8xS3A0a1LXealcmlEbJibmKkEaoXci3MhryLgpaa+Kk/sH02SNatDO1vS28bPsibZpcc6deFrla hSYnL+PW54mDTGHIcCN2fbx/Y6qspzqmtKaXrv75NBtuy9cB6KzU4j2xXbTkAwz3pRSghJJaAwdp +yIivAD3vr0kJE3p+Ez34HMh33EXEpFoWcN+MCEQZD9WnmFViMrvfvMXLGVFQfAAcC060eGFSRJ1 ZQ9UVQIDAQABoy0wKzAbBgNVHREEFDASgRBzbWhhdW5jaEBtYWMuY29tMAwGA1UdEwEB/wQCMAAw DQYJKoZIhvcNAQEEBQADgYEAQMrg1n2pXVWteP7BBj+Pk3UfYtbuHb42uHcLJjfjnRlH7AxnSwrd L3HED205w3Cq8T7tzVxIjRRLO/ljq0GedSCFBky7eYo1PrXhztGHCTSBhsiWdiyLWxKlOxGAwJc/ lMMnwqLOdrQcoF/YgbjeaUFOQbUh94w9VDNpWZYCZwcwggM/MIICqKADAgECAgENMA0GCSqGSIb3 DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlD YXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0 aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwg Q0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3 MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENv bnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElz c3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5owHUEcJ3f 6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuvPAsH5/EfkTYk KhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAeZBlyYLf7AgMBAAGj gZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnRo YXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNVHQ8EBAMCAQYwKQYDVR0R BCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqGSIb3DQEBBQUAA4GBAEiM 0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZ GwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZ Nd4ksdMdRv9dX2VPMYIC5zCCAuMCAQEwaTBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl IENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWls IElzc3VpbmcgQ0ECAw5c+TAJBgUrDgMCGgUAoIIBUzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB MBwGCSqGSIb3DQEJBTEPFw0wNTA1MDgxODE3NDZaMCMGCSqGSIb3DQEJBDEWBBQSkG9j6+hB0pKp fV9tCi/iP59sNTB4BgkrBgEEAYI3EAQxazBpMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1h aWwgSXNzdWluZyBDQQIDDlz5MHoGCyqGSIb3DQEJEAILMWugaTBiMQswCQYDVQQGEwJaQTElMCMG A1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNv bmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECAw5c+TANBgkqhkiG9w0BAQEFAASCAQAm1GeF7dWfMvrW 8yMPjkhE+R8D1DsiCoWSCp+5gAQm7lcK7V3KrZh5howfpI3TmCZUbbaMxOH+7aKRKpFemxoBY5Q8 rnCkbpg/++/+MI01T69hF/rgMmrGcrv2fIYy8EaARLG0xUVFSZHSP+NQSYz0TTmh4cAESHMzY3JA nHOoUkuPyl8RXrimY1zn0lceMXlweZRouiPGuPNl1hQKw8P+GhOC5oLlM71UtStnrlk3P9gqX5v7 Tj7Hx057oVfY8FMevjxGwU3EK5TczHezHbWWgTyum9l2ZQbUQsDJxSniD3BM46C1VcbDLPaotAZ0 fTYLZizQfm5hcWEbfYVzkSzLAAAAAAAA ------=_Part_5028_7368284.1115579351471-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email4.eml000066400000000000000000000037441436372131700235440ustar00rootroot00000000000000Return-Path: Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500 Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id j48HUC213279 for ; Sun, 8 May 2005 12:30:13 -0500 Received: from conversion-xxx.xxxx.xxx.net by xxx.xxxx.xxx id <0IG600901LQ64I@xxx.xxxx.xxx> for ; Sun, 8 May 2005 12:30:12 -0500 Received: from agw1 by xxx.xxxx.xxx with ESMTP id <0IG600JFYLYCAxxx@xxxx.xxx> for ; Sun, 8 May 2005 12:30:12 -0500 Date: Sun, 8 May 2005 12:30:08 -0500 From: xxx@xxxx.xxx To: xxx@xxxx.xxx Message-Id: <7864245.1115573412626.JavaMxxx@xxxx.xxx> Subject: Filth Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=mimepart_427e4cb4ca329_133ae40413c81ef X-Mms-Priority: 1 X-Mms-Transaction-Id: 3198421808-0 X-Mms-Message-Type: 0 X-Mms-Sender-Visibility: 1 X-Mms-Read-Reply: 1 X-Original-To: xxx@xxxx.xxx X-Mms-Message-Class: 0 X-Mms-Delivery-Report: 0 X-Mms-Mms-Version: 16 Delivered-To: xxx@xxxx.xxx X-Nokia-Ag-Version: 2.0 This is a multi-part message in MIME format. --mimepart_427e4cb4ca329_133ae40413c81ef Content-Type: multipart/mixed; boundary=mimepart_427e4cb4cbd97_133ae40413c8217 --mimepart_427e4cb4cbd97_133ae40413c8217 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-Location: text.txt Some text --mimepart_427e4cb4cbd97_133ae40413c8217-- --mimepart_427e4cb4ca329_133ae40413c81ef Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit -- This Orange Multi Media Message was sent wirefree from an Orange MMS phone. If you would like to reply, please text or phone the sender directly by using the phone number listed in the sender's address. To learn more about Orange's Multi Media Messaging Service, find us on the Web at xxx.xxxx.xxx.uk/mms --mimepart_427e4cb4ca329_133ae40413c81ef --mimepart_427e4cb4ca329_133ae40413c81ef- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email7.eml000066400000000000000000000032021436372131700235340ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Content-Type: multipart/mixed; boundary=Apple-Mail-13-196941151 Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com --Apple-Mail-13-196941151 Content-Type: multipart/mixed; boundary=Apple-Mail-12-196940926 --Apple-Mail-12-196940926 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=ISO-8859-1; delsp=yes; format=flowed This is the first part. --Apple-Mail-12-196940926 Content-Transfer-Encoding: 7bit Content-Type: text/x-ruby-script; x-unix-mode=0666; name="test.rb" Content-Disposition: attachment; filename=test.rb puts "testing, testing" --Apple-Mail-12-196940926 Content-Transfer-Encoding: base64 Content-Type: application/pdf; x-unix-mode=0666; name="test.pdf" Content-Disposition: inline; filename=test.pdf YmxhaCBibGFoIGJsYWg= --Apple-Mail-12-196940926 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed --Apple-Mail-12-196940926-- --Apple-Mail-13-196941151 Content-Transfer-Encoding: base64 Content-Type: application/pkcs7-signature; name=smime.p7s Content-Disposition: attachment; filename=smime.p7s jamisSqGSIb3DQEHAqCAMIjamisxCzAJBgUrDgMCGgUAMIAGCSqGSjamisEHAQAAoIIFSjCCBUYw ggQujamisQICBD++ukQwDQYJKojamisNAQEFBQAwMTELMAkGA1UEBhMCRjamisAKBgNVBAoTA1RE QzEUMBIGjamisxMLVERDIE9DRVMgQ0jamisNMDQwMjI5MTE1OTAxWhcNMDYwMjamisIyOTAxWjCB gDELMAkGA1UEjamisEsxKTAnBgNVBAoTIEjamisuIG9yZ2FuaXNhdG9yaXNrIHRpbjamisRuaW5= --Apple-Mail-13-196941151-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_encoded_stack_level_too_deep.eml000066400000000000000000000033471436372131700313720ustar00rootroot00000000000000X-Gmail-Received: 220984aec4c4885e060987be043c9363cbef8551 Received: by 10.36.47.16; Tue, 28 Jun 2005 01:02:11 -0700 (PDT) Message-ID: <89d7557c0506280102495d555f@mail.gmail.com> Date: Tue, 28 Jun 2005 01:02:11 -0700 From: Gmail Team Reply-To: x.y@gmail.com To: =?ISO-8859-1?Q?Nicolas_Fouch=E9?= Subject: =?ISO-8859-1?Q?Nicolas_Fouch=E9_has_accepted_your_invitation_to_Gmail?= Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_976_15222032.1119945731186" ------=_Part_976_15222032.1119945731186 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Nicolas Fouch=E9 has accepted your invitation to Gmail and has chosen the= =20 brand new address x.y@gmail.com. Be one of the first to email Nicolas= =20 at this new Gmail address--just hit reply and send Nicolas a message.=20 x.y@gmail.com has also been automatically added to your contact list= =20 so you can stay in touch with Gmail.=20 Thanks,=20 The Gmail Team ------=_Part_976_15222032.1119945731186 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline

    Nicolas Fouch=E9 has accepted your invitation to Gmail and has chosen the brand new address x.y@gmail.com. Be one of the first to = email=20 Nicolas at this new Gmail address--just hit reply and send=20 Nicolas a message. x.y@gmail.com has also been automatically added = to your contact list so you can stay in touch with Gmail.


    Thanks,

    The Gmail Team

    ------=_Part_976_15222032.1119945731186--mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_binary_encoded.eml000066400000000000000000000023541436372131700275340ustar00rootroot00000000000000From email_test@me.nowhere Return-Path: Received: from omta05sl.mx.bigpond.com by me.nowhere.else with ESMTP id 632BD5758 for ; Sun, 21 Oct 2007 19:38:21 +1000 Received: from oaamta05sl.mx.bigpond.com by omta05sl.mx.bigpond.com with ESMTP id <20071021093820.HSPC16667.omta05sl.mx.bigpond.com@oaamta05sl.mx.bigpond.com> for ; Sun, 21 Oct 2007 19:38:20 +1000 Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for ; Sun, 21 Oct 2007 19:38:20 +1000 Date: Sun, 21 Oct 2007 19:38:13 +1000 From: Mikel Lindsaar Reply-To: Mikel Lindsaar To: mikel@me.nowhere Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a> Subject: Testing outlook Subject: Another PDF Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=----=_Part_13069834_15179892.1376435426074 ------=_Part_13069834_15179892.1376435426074 Content-Type: image/jpeg; name=2013-08-13_19-08-28-1.jpg Content-Transfer-Encoding: binary Content-Location: 2013-08-13_19-08-28-1.jpg BINARY_CONTENT_GOES_HERE ------=_Part_13069834_15179892.1376435426074-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_illegal_boundary.eml000066400000000000000000000044501436372131700301020ustar00rootroot00000000000000From email_test@me.nowhere Return-Path: Received: from omta05sl.mx.bigpond.com by me.nowhere.else with ESMTP id 632BD5758 for ; Sun, 21 Oct 2007 19:38:21 +1000 Received: from oaamta05sl.mx.bigpond.com by omta05sl.mx.bigpond.com with ESMTP id <20071021093820.HSPC16667.omta05sl.mx.bigpond.com@oaamta05sl.mx.bigpond.com> for ; Sun, 21 Oct 2007 19:38:20 +1000 Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for ; Sun, 21 Oct 2007 19:38:20 +1000 Date: Sun, 21 Oct 2007 19:38:13 +1000 From: Mikel Lindsaar Reply-To: Mikel Lindsaar To: mikel@me.nowhere Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a> Subject: Testing outlook Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=----=_NextPart_000_0093_01C81419.EB75E850 X-Get_mail_default: mikel@me.nowhere.else X-Priority: 3 X-Original-To: mikel@me.nowhere X-Mailer: Microsoft Outlook Express 6.00.2900.3138 Delivered-To: mikel@me.nowhere X-Mimeole: Produced By Microsoft MimeOLE V6.00.2900.3138 X-Msmail-Priority: Normal This is a multi-part message in MIME format. ------=_NextPart_000_0093_01C81419.EB75E850 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: Quoted-printable Hello This is an outlook test So there. Me. ------=_NextPart_000_0093_01C81419.EB75E850 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: Quoted-printable
    Hello
    This is an outlook=20 test
     
    So there.
     
    Me.
    ------=_NextPart_000_0093_01C81419.EB75E850-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_mimepart_without_content_type.eml000066400000000000000000000103331436372131700327570ustar00rootroot00000000000000X-Gmail-Received: b2c98353cc39d93e4204831226f778c200d28109 Delivered-To: roor32@gmail.com Received: by 10.64.10.4 with SMTP id 4cs594808qbj; Fri, 20 Oct 2006 01:53:34 -0700 (PDT) Received: by 10.65.224.11 with SMTP id b11mr149813qbr; Fri, 20 Oct 2006 01:53:34 -0700 (PDT) Return-Path: <> Received: from anis.telecom.uqam.ca (anis.telecom.uqam.ca [132.208.250.6]) by mx.google.com with ESMTP id e13si1575402qbe.2006.10.20.01.53.34; Fri, 20 Oct 2006 01:53:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of anis.telecom.uqam.ca designates 132.208.250.6 as permitted sender) Received: from anis4.telecom.uqam.ca (anis4.telecom.uqam.ca [132.208.250.236]) by sortant.uqam.ca (8.13.6/8.12.1) with SMTP id k9K8SIwA023763 for ; Fri, 20 Oct 2006 04:28:33 -0400 (EDT) Received: from antivirus.uqam.ca ([127.0.0.1]) by anis4.telecom.uqam.ca (SAVSMTP 3.1.1.32) with SMTP id M2006102004283404041 for ; Fri, 20 Oct 2006 04:28:34 -0400 Received: from localhost (localhost) by antivirus.uqam.ca (8.13.6/8.12.1) id k9JMDbg4005560; Fri, 20 Oct 2006 04:28:33 -0400 (EDT) Date: Fri, 20 Oct 2006 04:28:33 -0400 (EDT) From: Mail Delivery Subsystem Message-Id: <200610200828.k9JMDbg4005560@antivirus.uqam.ca> To: MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="k9JMDbg4005560.1161332913/antivirus.uqam.ca" Subject: Warning: could not send message for past 1 day Auto-Submitted: auto-generated (warning-timeout) This is a MIME-encapsulated message --k9JMDbg4005560.1161332913/antivirus.uqam.ca ********************************************** ** THIS IS A WARNING MESSAGE ONLY ** ** YOU DO NOT NEED TO RESEND YOUR MESSAGE ** ********************************************** The original message was received at Thu, 19 Oct 2006 01:23:47 -0400 (EDT) from py-out-1112.google.com [64.233.166.178] ----- Transcript of session follows ----- ... Deferred Warning: message still undelivered after 1 day Will keep trying until message is 5 days old --k9JMDbg4005560.1161332913/antivirus.uqam.ca Content-Type: message/delivery-status Reporting-MTA: dns; antivirus.uqam.ca Arrival-Date: Thu, 19 Oct 2006 01:23:47 -0400 (EDT) Final-Recipient: RFC822; larose.julie@courrier.uqam.ca Action: delayed Status: 4.5.0 Diagnostic-Code: SMTP; Last-Attempt-Date: Fri, 20 Oct 2006 04:28:33 -0400 (EDT) Will-Retry-Until: Tue, 24 Oct 2006 01:23:47 -0400 (EDT) --k9JMDbg4005560.1161332913/antivirus.uqam.ca Content-Type: message/rfc822 Return-Path: Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.178]) by intrant.uqam.ca (8.13.6/8.12.2/uqam-filtres) with SMTP id k9J5Ni8o007263 for ; Thu, 19 Oct 2006 01:23:47 -0400 (EDT) X-UQAM-Spam-Filter: Filtre-Uqam re: abuse@uqam.ca Received: by py-out-1112.google.com with SMTP id t32so610221pyc for ; Wed, 18 Oct 2006 22:23:33 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=Fwt0k1kaMU+1kM1iTG0q4Xf94p9alSohgM7QQN0CSjfBYUUhT+J4Y6+ZWotaaSffV3gX86RE/n97n0yQ/33EgYKIifuEpa0hi2mg3KTmcDqlCjiDfih58Z998GEFfbhu0he2jsoB+k6AgVRFPwP6LMRi6T66vr2f7IOAmX2IHiU= Received: by 10.65.241.20 with SMTP id t20mr15391984qbr; Wed, 18 Oct 2006 15:10:03 -0700 (PDT) Received: by 10.64.10.4 with HTTP; Wed, 18 Oct 2006 15:10:03 -0700 (PDT) Message-ID: <89d7557c0610181510r6fa5ebd8n66a7deec71ade118@mail.gmail.com> Date: Wed, 18 Oct 2006 18:10:03 -0400 From: "=?ISO-8859-1?Q?RogE9?=" To: larose.julie@courrier.uqam.ca Subject: Est-ce toi ? MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Salut, je ne suis pas sur de m'adresser a la bonne personne. Mais si jamais tu me reconnais :p, peux-tu repondre a ce mail ? Merci. Roger --k9JMDbg4005560.1161332913/antivirus.uqam.ca-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_multipart_mixed_quoted_boundary.eml000066400000000000000000000056271436372131700332700ustar00rootroot00000000000000From email_test@me.nowhere Return-Path: Received: from omta05sl.mx.bigpond.com by me.nowhere.else with ESMTP id 632BD5758 for ; Sun, 21 Oct 2007 19:38:21 +1000 Received: from oaamta05sl.mx.bigpond.com by omta05sl.mx.bigpond.com with ESMTP id <20071021093820.HSPC16667.omta05sl.mx.bigpond.com@oaamta05sl.mx.bigpond.com> for ; Sun, 21 Oct 2007 19:38:20 +1000 Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for ; Sun, 21 Oct 2007 19:38:20 +1000 Date: Sun, 21 Oct 2007 19:38:13 +1000 From: Mikel Lindsaar Reply-To: Mikel Lindsaar To: mikel@me.nowhere Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a> Subject: Testing outlook Subject: Another PDF Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2192_32400445.1115745999735" X-Virus-Scanned: amavisd-new at textdrive.com ------=_Part_2192_32400445.1115745999735 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Just attaching another PDF, here, to see what the message looks like, and to see if I can figure out what is going wrong here. ------=_Part_2192_32400445.1115745999735 Content-Type: application/pdf; name="broken.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="broken.pdf" JVBERi0xLjQNCiXk9tzfDQoxIDAgb2JqDQo8PCAvTGVuZ3RoIDIgMCBSDQogICAvRmlsdGVyIC9G bGF0ZURlY29kZQ0KPj4NCnN0cmVhbQ0KeJy9Wt2KJbkNvm/od6jrhZxYln9hWEh2p+8HBvICySaE ycLuTV4/1ifJ9qnq09NpSBimu76yLUuy/qzqcPz7+em3Ixx/CDc6CsXxs3b5+fvfjr/8cPz6/BRu rbfAx/n3739/fuJylJ5u5fjX81OuDr4deK4Bz3z/aDP+8fz0yw8g0Ofq7ktr1Mn+u28rvhy/jVeD QSa+9YNKHP/pxjvDNfVAx/m3MFz54FhvTbaseaxiDoN2LeMVMw+yA7RbHSCDzxZuaYB2E1Yay7QU x89vz0+tyFDKMlAHK5yqLmnjF+c4RjEiQIUeKwblXMe+AsZjN1J5yGQL5DHpDHksurM81rF6PKab gK6zAarIDzIiUY23rJsN9iorAE816aIu6lsgAdQFsuhhkHOUFgVjp2GjMqSewITXNQ27jrMeamkg 1rPI3iLWG2CIaSBB+V1245YVRICGbbpYKHc2USFDl6M09acQVQYhlwIrkBNLISvXhGlF1wi5FHCw wxZkoGNJlVeJCEsqKA+3YAV5AMb6KkeaqEJQmFKKQU8T1pRi2ihE1Y4CDrqoYFFXYjJJOatsyzuI 8SIlykuxKTMibWK8H1PgEvqYgs4GmQSrEjJAalgGirIhik+p4ZQN9E3ETFPAHE1b8pp1l/0Rc1gl fQs0ABWvyoZZzU8VnPXwVVcO9BEsyjEJaO6eBoZRyKGlrKoYoOygA8BGIzgwN3RQ15ouigG5idZQ fx2U4Db2CqiLO0WHAZoylGiCAqhniNQjFjQPSkmjwfNTgQ6M1Ih+eWo36wFmjIxDJZiGUBiWsAyR xX3EekGOizkGI96Ol9zVZTAivikURhRsHh2E3JhWMpSTZCnnonrLhMCodgrNcgo4uyJUJc6qnVss nrGd1Ptr0YwisCOYyIbUwVjV4xBUNLbguSO2YHujonAMJkMdSI7bIw91Akq2AUlMUWGFTMAOamjU OvZQCxIkY2pCpMFo/IwLdVLHs6nddwTRrgoVbvLU9eB0G4EMndV0TNoxHbt3JBWwK6hhv3iHfDtF yokB302IpEBTnWICde4uYc/1khDbSIkQopO6lcqamGBu1OSE3N5IPSsZX00CkSHRiiyx6HQIShsS HSVNswdVsaOUSAWq9aYhDtGDaoG5a3lBGkYt/lFlBFt1UqrYnzVtUpUQnLiZeouKgf1KhRBViRRk ExepJCzTwEmFDalIRbLEGtw0gfpESOpIAF/NnpPzcVCG86s0g2DuSyd41uhNGbEgaSrWEXORErbw ------=_Part_2192_32400445.1115745999735-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_nested_attachment.eml000066400000000000000000000116731436372131700302650ustar00rootroot00000000000000From jamis@37signals.com Thu Feb 22 11:20:31 2007 Mime-Version: 1.0 (Apple Message framework v752.3) Message-Id: <2CCE0408-10C7-4045-9B16-A1C11C31469B@37signals.com> Content-Type: multipart/signed; micalg=sha1; boundary=Apple-Mail-42-587703407; protocol="application/pkcs7-signature" To: Jamis Buck Subject: Testing attachments From: Jamis Buck Date: Thu, 22 Feb 2007 11:20:31 -0700 --Apple-Mail-42-587703407 Content-Type: multipart/mixed; boundary=Apple-Mail-41-587703287 --Apple-Mail-41-587703287 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Here is a test of an attachment via email. - Jamis --Apple-Mail-41-587703287 Content-Transfer-Encoding: base64 Content-Type: image/png; x-unix-mode=0644; name=byo-ror-cover.png Content-Disposition: inline; filename=truncated.png iVBORw0KGgoAAAANSUhEUgAAAKUAAADXCAYAAAB7wZEQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz AAALEgAACxIB0t1+/AAAABd0RVh0Q3JlYXRpb24gVGltZQAxLzI1LzIwMDeD9CJVAAAAGHRFWHRT b2Z0d2FyZQBBZG9iZSBGaXJld29ya3NPsx9OAAAyBWlUWHRYTUw6Y29tLmFkb2JlLnhtcDw/eHBh Y2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1l dGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMS1j MDIwIDEuMjU1NzE2LCBUdWUgT2N0IDEwIDIwMDYgMjM6MTY6MzQiPgogICA8cmRmOlJERiB4bWxu czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAg ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFk b2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVE YXRlPjIwMDctMDEtMjVUMDU6Mjg6MjFaPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhhcDpN b2RpZnlEYXRlPjIwMDctMDEtMjVUMDU6Mjg6MjFaPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9y ZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg ICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAg ICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0 hhojpmnJMfaYFmSkXWg5PGCmHXVj/c9At0hSK2xGdd8F3muk0VFjb4f5Ue0ksQ8qAcq0delaXhdb DjKNnF+3B3t9kObZYmk7AZgWYqO9anpR3wpM9sQ5XslB9a+kWyTtNb0fOmudzGHfPFBQDKesyycm DBL7Cw5bXjIEuci+SSOm/LYnXDZu6iuPEj8lYBb+OU8xx1f9m+e5rhJiYKqjo5vHfiZp+VUkW9xc Ufd6JHNWc47PkQqb9ie3SLEZB/ZqyAssiqURY+G35iOMZUrHbasHnb80QAPv9FHtAbJIyro7bi5b ai2TEAKen5+LJNWrglZjm3UbZvt7KryA2J5b5J1jZF8kL6GzvG1Zqx54Y1y7J7n20wMOt9frG2sW uwGP07kNz3732vf6bfvAvLldfS+9fts2euXY37D+R29FGZdlnhzV4TTFmPJduBP2RbNNua4rTqcT Qt7Xy1KUB0AHSdP5AZQYvHZg7WD1XvYeMO1A9HhZPqMX5KXbMBrn2efxns/ee21674efxz4Tp/fq 2HZ648dgYaC1i3Vq1IbNPq3PvDTPezY9FaRISjvnzWqdgcWN8EJgjnNq+Z7ktOm9l2Nfth28EZi4 bG/we5JwxM+Tql47/D/X6b38I8/RyxvxPJrX6zvQbo3h9jyJx+C0ALX327QETHl5eYlaYCT5rPTb +5/rAq26t3lKIxV/p88hq6ptngdgCzoPjJqndiLfc/6y5A14WeDFGNPct4iUsJBV2bYzLEV7m83s 6Rp63VPhHKC/g/LzaU9qexJRr56043JWinqAtfZqsSm1sjoznthl54dtCqv+uL4nIY+oYWuc3+nH kGfn8b0HQpvOYLQAZUDanbJs3jQhITZEgdarZK+cO6ySlL13rut5nFaN23s7u3Snz6eRPTkCoc2/ Vp1zHfZVFpZ87FiMVLV1iqyK5rlzfji2GzjfDsodlD+Weo5UD4h6PwKqzQMqID0tq2VjjFVSMpis ZLRAs7sePZBZAHI+gIanB8I7MD+femAceeUe2Kxa5jS950kZ1p5eNEdeX1+jFmSpZ+1EdWCsDcne NPNgUHNw3aYpnzv9PGTX0uo94EtN9qq1rOdxe3kc79T8ukeHJJ8Fnxej6qlylbLLsjQLOy6Xy2a1 kefs/N+nM7+S7IG5/E5Yc7F003pWErLjbH0O5cGadiMptSB/DZ5U5DI9yeg5MFYyMj8lC/Y7/Xjq OZlWcnpg9aQfXz2HRq+Wn5xOp6gN8tWq8R44e2pfyzLYemEgprst+XXk2Zj2nXlbsG05BprndTMv C3QRaXczshhVsHnMgfYn80Y2g5JureA6wBasPeP7LkE/jvZMJAaf/g/U2RelHsisvan5FqweIAHg Pwc7L68GxvVDAAAAAElFTkSuQmCC --Apple-Mail-41-587703287-- --Apple-Mail-42-587703407 Content-Transfer-Encoding: base64 Content-Type: application/pkcs7-signature; name=smime.p7s Content-Disposition: attachment; filename=smime.p7s MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGJzCCAuAw ggJJoAMCAQICEFjnFNYXwDEZRWY5EkfzopUwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA2MDkxMjE3MDExMloXDTA3MDkxMjE3MDEx MlowRTEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEiMCAGCSqGSIb3DQEJARYTamFt aXNAMzdzaWduYWxzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO2A9JeOFIFJ G6z8pTcAldrZ2nMe+Xb1tNrbHgoVzN/QhHXM4qst2Ml93cmFLjMmwG7P9RJeU4oNx+jTqVoBB7NV Ne1/o56Do0KhfMZ9iUDQdPLbkZMq4EEpFMdm6PyM3muRKwPhj66iAWe/osCb8DowUK2f66vaRx0Z Y0MQHIIrXE02Ta4IfAhIfPqBLkZ4WgTYBHN9vMdYea1jF0GO4gqGk1wqwb3yxv2QMYMbwJ6SI+k/ ZjkSR/OilTCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1h aWwgSXNzdWluZyBDQQIQWOcU1hfAMRlFZjkSR/OilTANBgkqhkiG9w0BAQEFAASCAQCfwQiC3v6/ yleRDGv3bJ4nQYQ+c3mz3+mn3Xi6uU35n3piwxZZaWRdmLyiXPvU+QReHpSf3l2qsEZM3sdE0XF9 eRul/+QTFJcDNXOEAxG1zC2Gpz+6c6RrX4Ou12Pwkp+pNrZWTSY/mZgdqcArupOBcZi7qBjoWcy5 wb54dfvSSjrjmqLbkH/E8ww/6gGQuU/xXpAUZgUrTmQHrNKeIdSh5oDkOxFaFWvnmb8Z/2ixKqW/ Ux6WqamyvBtTs/5YBEtnpZOk+uVoscYEUBhU+DVJ2OSvTdXSivMtBdXmGTsG22k+P1NGUHi/A7ev xPaO0uk4V8xyjNlN4HPuGpkrlXwPAAAAAAAA --Apple-Mail-42-587703407-- mail-2.8.1/spec/fixtures/emails/mime_emails/raw_email_with_quoted_illegal_boundary.eml000066400000000000000000000044521436372131700314650ustar00rootroot00000000000000From email_test@me.nowhere Return-Path: Received: from omta05sl.mx.bigpond.com by me.nowhere.else with ESMTP id 632BD5758 for ; Sun, 21 Oct 2007 19:38:21 +1000 Received: from oaamta05sl.mx.bigpond.com by omta05sl.mx.bigpond.com with ESMTP id <20071021093820.HSPC16667.omta05sl.mx.bigpond.com@oaamta05sl.mx.bigpond.com> for ; Sun, 21 Oct 2007 19:38:20 +1000 Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for ; Sun, 21 Oct 2007 19:38:20 +1000 Date: Sun, 21 Oct 2007 19:38:13 +1000 From: Mikel Lindsaar Reply-To: Mikel Lindsaar To: mikel@me.nowhere Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a> Subject: Testing outlook Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0093_01C81419.EB75E850" X-Get_mail_default: mikel@me.nowhere.else X-Priority: 3 X-Original-To: mikel@me.nowhere X-Mailer: Microsoft Outlook Express 6.00.2900.3138 Delivered-To: mikel@me.nowhere X-Mimeole: Produced By Microsoft MimeOLE V6.00.2900.3138 X-Msmail-Priority: Normal This is a multi-part message in MIME format. ------=_NextPart_000_0093_01C81419.EB75E850 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: Quoted-printable Hello This is an outlook test So there. Me. ------=_NextPart_000_0093_01C81419.EB75E850 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: Quoted-printable
    Hello
    This is an outlook=20 test
     
    So there.
     
    Me.
    ------=_NextPart_000_0093_01C81419.EB75E850-- mail-2.8.1/spec/fixtures/emails/mime_emails/sig_only_email.eml000066400000000000000000000016711436372131700245070ustar00rootroot00000000000000Date: Mon, 4 Jun 2007 15:01:31 -0700 From: Test To: Mikel Subject: Re: Testing multipart/signed Message-ID: <20070604150131.40d4fa1e@reforged> Mime-Version: 1.0 Content-Type: multipart/signed; boundary=Sig_2GIY2xfzqSADMmu9sKGJqWm; protocol="application/pgp-signature"; micalg=PGP-SHA1 --Sig_2GIY2xfzqSADMmu9sKGJqWm Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable This is random text, not what has been signed below, ie, this sig email is not signed correctly. --Sig_2GIY2xfzqSADMmu9sKGJqWm Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DB1111Iu7dfRchrkBInkRArniAKCue17JOxXBiAZHwLy3uFacU+pmhwCgwzhf V5YSPv2xmYOA6mJ6oVaasseQ= =T7p9 -----END PGP SIGNATURE----- --Sig_2GIY2xfzqSADMmu9sKGJqWm-- mail-2.8.1/spec/fixtures/emails/mime_emails/two_from_in_message.eml000066400000000000000000000033601436372131700255400ustar00rootroot00000000000000Return-Path: Received: from mail-xxx.google.com (mail-xxx.google.com [0.0.0.0]) by smtp.test.com (Postfix) with ESMTP id xxxx for ; Wed, 2 Dec 2009 09:39:57 +0000 (UTC) Received: by qyk6 with SMTP id 6so3112qyk.3 for ; Wed, 02 Dec 2009 01:39:53 -0800 (PST) MIME-Version: 1.0 Received: by 0.0.0.0 with SMTP id xxx.000.0000000000000; Wed, 02 Dec 2009 01:39:53 -0800 (PST) In-Reply-To: <8fc5086d0912020131y377ba0ccpf8f14783cfc3014a@test.com> References: <8fc5086d0912020131y377ba0ccpf8f14783cfc3014a@test.com> From: Tester 1 Date: Wed, 2 Dec 2009 22:39:33 +1300 Message-ID: <8fc5086d0912020139y1564ad32jb4f4209fa464f4a6@test.com> Subject: Sending messages include last little bit To: tester2@test.com Content-Type: multipart/alternative; boundary=00c09fa216eb1bfc0a0479bba823 --00c09fa216eb1bfc0a0479bba823 Content-Type: text/plain; charset=ISO-8859-1 When sending email: * From Hotmail you get the ads as well. * From GMail you also get the person's signature. I'm curious, and I might do some digging tomorrow as well, to see if its possible to strip the last little bit (signature/ads) from email messages. --00c09fa216eb1bfc0a0479bba823 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
    When sending ema= il:
    * From Hotmail you get the ads as well.
    * Fr= om GMail you also get the person's signature.

    = I'm curious, and I might do some digging tomorrow as well, to see if it= s possible to strip the last little bit (signature/ads) from email messages= .
    --00c09fa216eb1bfc0a0479bba823--mail-2.8.1/spec/fixtures/emails/multi_charset/000077500000000000000000000000001436372131700213735ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/multi_charset/japanese.eml000066400000000000000000000005201436372131700236550ustar00rootroot00000000000000MIME-Version: 1.0 Subject: =?UTF-8?B?44G+44G/44KA44KB44KC?= From: Mikel Lindsaar To: =?UTF-8?B?44G/44GR44KL?= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 44GL44GN44GP44GI44GTCgotLSAKaHR0cDovL2xpbmRzYWFyLm5ldC8KUmFpbHMsIFJTcGVjIGFu ZCBMaWZlIGJsb2cuLi4uCg==mail-2.8.1/spec/fixtures/emails/multi_charset/japanese_attachment.eml000066400000000000000000000016051436372131700260720ustar00rootroot00000000000000MIME-Version: 1.0 Received: by 10.231.35.72 with HTTP; Fri, 16 Oct 2009 05:39:34 -0700 (PDT) Date: Fri, 16 Oct 2009 23:39:34 +1100 Delivered-To: raasdnil@gmail.com Message-ID: <57a815bf0910160539m64240421gb35ea52e101aedbc@mail.gmail.com> Subject: testing From: Mikel Lindsaar To: Mikel Lindsaar Content-Type: multipart/mixed; boundary=00032557395e3572cf04760cb060 --00032557395e3572cf04760cb060 Content-Type: text/plain; charset=UTF-8 testing -- http://lindsaar.net/ Rails, RSpec and Life blog.... --00032557395e3572cf04760cb060 Content-Type: text/plain; charset=UTF-8; name="=?UTF-8?B?44Gm44GZ44GoLnR4dA==?=" Content-Disposition: attachment; filename="=?UTF-8?B?44Gm44GZ44GoLnR4dA==?=" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0uxfl510 dGhpcyBpcyBhIHRlc3QK44GT44KM44KP44Gm44GZ44Go --00032557395e3572cf04760cb060--mail-2.8.1/spec/fixtures/emails/multi_charset/japanese_attachment_long_name.eml000066400000000000000000000045541436372131700301170ustar00rootroot00000000000000Delivered-To: raasdnil@gmail.com Received: by 10.231.12.67 with SMTP id w3cs164325ibw; Fri, 30 Oct 2009 01:11:12 -0700 (PDT) Received: by 10.150.44.2 with SMTP id r2mr2367210ybr.77.1256890271939; Fri, 30 Oct 2009 01:11:11 -0700 (PDT) Return-Path: Received: from mx1.test.lindsaar.net.au (mx1.test.lindsaar.net.au [210.14.110.240]) by mx.google.com with ESMTP id 25si7923673gxk.34.2009.10.30.01.11.11; Fri, 30 Oct 2009 01:11:11 -0700 (PDT) Received-SPF: neutral (google.com: 210.14.110.240 is neither permitted nor denied by domain of mikel@test.lindsaar.net) client-ip=210.14.110.240; Authentication-Results: mx.google.com; spf=neutral (google.com: 210.14.110.240 is neither permitted nor denied by domain of mikel@test.lindsaar.net) smtp.mail=mikel@test.lindsaar.net Received: from [192.168.4.253] (60-241-138-146.static.tpgi.com.au [60.241.138.146]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: mikel) by mx1.test.lindsaar.net.au (Postfix) with ESMTPSA id 5C0186DD4CD for ; Fri, 30 Oct 2009 19:11:08 +1100 (EST) Subject: =?utf-8?B?44G+44G/44KA44KB44KC44G+44G/44KA44KB44KC44G+44G/44KA?= =?utf-8?B?44KB44KC44G+44G/44KA44KB44KC44G+44G/44KA44KB44KC44G+?= =?utf-8?B?44G/44KA44KB44KC44G+44G/44KA44KB44KC44G+44G/44KA44KB?= =?utf-8?B?44KC44G+44G/44KA44KB44KC44G+44G/44KA44KB44KC?= From: Mikel Lindsaar Content-Type: multipart/mixed; boundary=Apple-Mail-6--589811753 Message-Id: <60A112A8-F26C-4E23-95B8-4EB9F139D6A0@test.lindsaar.net> Date: Fri, 30 Oct 2009 19:11:02 +1100 To: Mikel Lindsaar Mime-Version: 1.0 (Apple Message framework v1076) X-Mailer: Apple Mail (2.1076) --Apple-Mail-6--589811753 Content-Disposition: attachment; filename*0*=utf-8''%E3%81%8B%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93%E3%81%8B%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93%E3%81%8B%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93%E3%81%8B%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93%E3%81%8B; filename*1*=%E3%81%8D%E3%81%8F%E3%81%91%E3%81%93.txt Content-Type: text/plain; x-unix-mode=0644; name="=?utf-8?B?44GL44GN44GP44GR44GT44GL44GN44GP44GR44GT44GL44GN44GP?= =?utf-8?B?44GR44GT44GL44GN44GP44GR44GT44GL44GN44GP44GR44GTLnR4?= =?utf-8?B?dA==?=" Content-Transfer-Encoding: 7bit this is the data --Apple-Mail-6--589811753--mail-2.8.1/spec/fixtures/emails/multi_charset/japanese_iso_2022.eml000066400000000000000000000004061436372131700251770ustar00rootroot00000000000000MIME-Version: 1.0 Subject: =?UTF-8?B?44G+44G/44KA44KB44KC?= From: Mikel Lindsaar To: =?UTF-8?B?44G/44GR44KL?= Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit $B$9$_$^$;$s!#(B mail-2.8.1/spec/fixtures/emails/multi_charset/japanese_shift_jis.eml000066400000000000000000000005651436372131700257300ustar00rootroot00000000000000Delivered-To: unknown@example.com Date: Wed, 28 May 2014 17:18:19 +0900 (JST) From: xxxxxxx@docomo.ne.jp To: unknown@example.com Subject: test Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="Shift_JIS" Content-Transfer-Encoding: 8bit ̃[̓eXgp̃[łB Ƃ낵肢\グ܂I mail-2.8.1/spec/fixtures/emails/multi_charset/ks_c_5601-1987.eml000066400000000000000000000004421436372131700240720ustar00rootroot00000000000000Delivered-To: unknown@example.com Date: Wed, 28 May 2014 17:18:19 +0900 (JST) From: from@example.com To: unknown@example.com Subject: test Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: 8bit Ƽ mail-2.8.1/spec/fixtures/emails/multipart_report_emails/000077500000000000000000000000001436372131700234765ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/multipart_report_emails/multi_address_bounce1.eml000066400000000000000000000173751436372131700304650ustar00rootroot00000000000000Received: from lvmail01.LL.com (LHLO lvmail01.LL.com) (10.60.6.3) by lvmail01.LL.com with LMTP; Tue, 23 Feb 2010 22:16:41 -0800 (PST) Received: by lvmail01.LL.com (Postfix) id 3E47A1BC025; Tue, 23 Feb 2010 22:16:41 -0800 (PST) Date: Tue, 23 Feb 2010 22:16:41 -0800 (PST) From: MAILER-DAEMON@lvmail01.LL.com (Mail Delivery System) Subject: Undelivered Mail Returned to Sender To: rahul.chaudhari@LL.com Auto-Submitted: auto-replied MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="9B7841BC027.1266992201/lvmail01.LL.com" Content-Transfer-Encoding: 7bit Message-Id: <20100224061641.3E47A1BC025@lvmail01.LL.com> This is a MIME-encapsulated message. --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Notification Content-Type: text/plain; charset=us-ascii This is the mail system at host lvmail01.LL.com. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Delivery report Content-Type: message/delivery-status Reporting-MTA: dns; lvmail01.LL.com X-Postfix-Queue-ID: 9B7841BC027 X-Postfix-Sender: rfc822; rahul.chaudhari@LL.com Arrival-Date: Tue, 23 Feb 2010 22:16:15 -0800 (PST) Final-Recipient: rfc822; bbbbvhvbbvkjbhfbvbvjhb@gmail.com Original-Recipient: rfc822;bbbbvhvbbvkjbhfbvbvjhb@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Original-Recipient: rfc822;bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; egyfefsdvsfvvhjsd@gmail.com Original-Recipient: rfc822;egyfefsdvsfvvhjsd@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; kfhejkfbsjkjsbhds@gmail.com Original-Recipient: rfc822;kfhejkfbsjkjsbhds@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com Original-Recipient: rfc822;qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Undelivered Message Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Return-Path: Received: from localhost (localhost [127.0.0.1]) by lvmail01.LL.com (Postfix) with ESMTP id 9B7841BC027; Tue, 23 Feb 2010 22:16:15 -0800 (PST) X-Virus-Scanned: amavisd-new at LL.com Received: from lvmail01.LL.com ([127.0.0.1]) by localhost (lvmail01.LL.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HXMOLJWXGcFK; Tue, 23 Feb 2010 22:16:15 -0800 (PST) Received: from lvmail01.LL.com (lvmail01.LL.com [10.60.6.3]) by lvmail01.LL.com (Postfix) with ESMTP id 12D311BC025; Tue, 23 Feb 2010 22:16:15 -0800 (PST) Date: Tue, 23 Feb 2010 22:16:14 -0800 (PST) From: Rahul Chaudhari To: egyfefsdvsfvvhjsd@gmail.com, kfhejkfbsjkjsbhds@gmail.com, bbbbvhvbbvkjbhfbvbvjhb@gmail.com, qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com, bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Message-ID: <118707422.15521266992174819.JavaMail.root@lvmail01> Subject: Test of bounce email MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.50.4.44] X-Mailer: Zimbra 6.0.1_GA_1816.UBUNTU8_64 (ZimbraWebClient - FF3.0 (Linux)/6.0.1_GA_1816.UBUNTU8_64) This is just testing. Thanks & Regards, Rahul P. Chaudhari Software Developer LIVIA India Private Limited Board Line - +91.22.6725 5100 Hand Phone - +91.809 783 3437 Web URL: www.LL.com --9B7841BC027.1266992201/lvmail01.LL.com-- mail-2.8.1/spec/fixtures/emails/multipart_report_emails/multi_address_bounce2.eml000066400000000000000000000173751436372131700304660ustar00rootroot00000000000000Received: from lvmail01.LL.com (LHLO lvmail01.LL.com) (10.60.6.3) by lvmail01.LL.com with LMTP; Tue, 23 Feb 2010 22:16:41 -0800 (PST) Received: by lvmail01.LL.com (Postfix) id 3E47A1BC025; Tue, 23 Feb 2010 22:16:41 -0800 (PST) Date: Tue, 23 Feb 2010 22:16:41 -0800 (PST) From: MAILER-DAEMON@lvmail01.LL.com (Mail Delivery System) Subject: Undelivered Mail Returned to Sender To: rahul.chaudhari@LL.com Auto-Submitted: auto-replied MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="9B7841BC027.1266992201/lvmail01.LL.com" Content-Transfer-Encoding: 7bit Message-Id: <20100224061641.3E47A1BC025@lvmail01.LL.com> This is a MIME-encapsulated message. --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Notification Content-Type: text/plain; charset=us-ascii This is the mail system at host lvmail01.LL.com. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) : host gmail-smtp-in.l.google.com[209.85.223.33] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 (in reply to RCPT TO command) --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Delivery report Content-Type: message/delivery-status Reporting-MTA: dns; lvmail01.LL.com X-Postfix-Queue-ID: 9B7841BC027 X-Postfix-Sender: rfc822; rahul.chaudhari@LL.com Arrival-Date: Tue, 23 Feb 2010 22:16:15 -0800 (PST) Final-Recipient: rfc822; bbbbvhvbbvkjbhfbvbvjhb@gmail.com Original-Recipient: rfc822;bbbbvhvbbvkjbhfbvbvjhb@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Original-Recipient: rfc822;bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; egyfefsdvsfvvhjsd@gmail.com Original-Recipient: rfc822;egyfefsdvsfvvhjsd@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; kfhejkfbsjkjsbhds@gmail.com Original-Recipient: rfc822;kfhejkfbsjkjsbhds@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 Final-Recipient: rfc822; qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com Original-Recipient: rfc822;qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com Action: failed Status: 5.1.1 Remote-MTA: dns; gmail-smtp-in.l.google.com Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 41si5422799iwn.27 --9B7841BC027.1266992201/lvmail01.LL.com Content-Description: Undelivered Message Content-Type: message/rfc822 Content-Transfer-Encoding: 7bit Return-Path: Received: from localhost (localhost [127.0.0.1]) by lvmail01.LL.com (Postfix) with ESMTP id 9B7841BC027; Tue, 23 Feb 2010 22:16:15 -0800 (PST) X-Virus-Scanned: amavisd-new at LL.com Received: from lvmail01.LL.com ([127.0.0.1]) by localhost (lvmail01.LL.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HXMOLJWXGcFK; Tue, 23 Feb 2010 22:16:15 -0800 (PST) Received: from lvmail01.LL.com (lvmail01.LL.com [10.60.6.3]) by lvmail01.LL.com (Postfix) with ESMTP id 12D311BC025; Tue, 23 Feb 2010 22:16:15 -0800 (PST) Date: Tue, 23 Feb 2010 22:16:14 -0800 (PST) From: Rahul Chaudhari To: egyfefsdvsfvvhjsd@gmail.com, kfhejkfbsjkjsbhds@gmail.com, bbbbvhvbbvkjbhfbvbvjhb@gmail.com, qfvhgsvhgsduiohncdhcvhsdfvsfygusd@gmail.com, bscdbcjhasbcjhbdscbhbsdhcbj@gmail.com Message-ID: <118707422.15521266992174819.JavaMail.root@lvmail01> Subject: Test of bounce email MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.50.4.44] X-Mailer: Zimbra 6.0.1_GA_1816.UBUNTU8_64 (ZimbraWebClient - FF3.0 (Linux)/6.0.1_GA_1816.UBUNTU8_64) This is just testing. Thanks & Regards, Rahul P. Chaudhari Software Developer LIVIA India Private Limited Board Line - +91.22.6725 5100 Hand Phone - +91.809 783 3437 Web URL: www.LL.com --9B7841BC027.1266992201/lvmail01.LL.com-- mail-2.8.1/spec/fixtures/emails/multipart_report_emails/multipart_report_multiple_status.eml000066400000000000000000000110531436372131700331270ustar00rootroot00000000000000Return-Path: <> X-Original-To: notification+promo@blah.com Delivered-To: notification+promo@blah.com Received: from schemailmta04.ci.com (schemailmta04.ci.com [209.183.37.58]) by blah.com (Postfix) with ESMTP id 24EF419F546 for ; Tue, 29 Jun 2010 15:42:46 +0000 (UTC) To: notification+promo@blah.com From: Mail Administrator Reply-To: Subject: Mail System Error - Returned Mail Date: Tue, 29 Jun 2010 10:42:44 -0500 Message-ID: <20100629154244.OZPA15102.schemailmta04.ci.com@schemailmta04> MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; Boundary="===========================_ _= 6078796(15102)1277826164" X-Cloudmark-Analysis: v=1.0 c=1 a=q8OS1GolVHwA:10 a=ev1gGZlfZ-EA:10 a=HQ-Cukr2AAAA:8 a=qihIh-XuXL65y3o_mUgA:9 a=mUL5bUDOV_-gjcCZylcY5Lz4jjsA:4 a=iQvSWfByulMA:10 a=ni8l3qMSI1sA:10 a=WHDNLAQ519cA:10 a=Fry9e7MVxuJdODrS104A:9 a=JYo4OF_E9TqbHrUN2TvLdggtx2cA:4 a=S0jCPnXDAAAA:8 a=pXkHMj1YAAAA:8 a=5ErcFzC0N3E7OloTRA8A:9 a=cC0RL7HlXt3RrKfnpEbxHCeM-zQA:4 a=cHEBK1Z0Lu8A:10 a=p9ZeupWRHUwA:10 a=7sPVfr_AX1EA:10 --===========================_ _= 6078796(15102)1277826164 Content-Type: message/delivery-status; This Message was undeliverable due to the following reason: has restricted SMS e-mail Please reply to if you feel this message to be in error. --===========================_ _= 6078796(15102)1277826164 Content-Type: message/delivery-status Reporting-MTA: dns; schemailmta04.ci.com Arrival-Date: Tue, 29 Jun 2010 10:42:37 -0500 Received-From-MTA: dns; schemailedgegx04.ci.com (172.16.130.170) Original-Recipient: rfc822;u@ci.com Final-Recipient: RFC822; Action: failed Status: 5.3.0 --===========================_ _= 6078796(15102)1277826164 Content-Type: message/rfc822 Received: from schemailedgegx04.ci.com ([172.16.130.170]) by schemailmta04.ci.com (InterMail vM.6.01.04.00 201-2131-118-20041027) with ESMTP id <20100629154237.OZBY15102.schemailmta04.ci.com@schemailedgegx04.ci.com> for ; Tue, 29 Jun 2010 10:42:37 -0500 Received: from blah.com ([1.1.1.1]) by schemailedgegx04.ci.com (InterMail vG.1.02.00.04 201-2136-104-104-20050323) with ESMTP id <20100629154225.WEFB17009.schemailedgegx04.ci.com@blah.com> for ; Tue, 29 Jun 2010 10:42:25 -0500 Received: from blah.com (snooki [10.12.126.68]) by blah.com (Postfix) with ESMTP id 4BDAE19F546 for ; Tue, 29 Jun 2010 15:42:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=blah.com; s=2010; t=1277826145; bh=wC3hHAhQgApcTmwQsi2F4OJf40rbyIek/WwIuzSc3V M=; h=Date:From:Reply-To:To:Message-ID:Subject:Mime-Version: Content-Type:Content-Transfer-Encoding:List-Unsubscribe; b=aw+Bhd8 t1goZUXWBAHSrHaM1IdqhkXqF5WVMwGRYcnya4FHNw05XfpB3TTpTFda13DfhtziFRk zHSfiNbMapv7Vz+D3A/9NHg5nKahSMosZVTa0BfajYWNd1aY8JUWUlxdQHxQQ4ygCBj /MndJohtSm6K3gsqdIv88DNXdBGBEw= Date: Tue, 29 Jun 2010 15:42:25 +0000 From: HomeRun Reply-To: HomeRun To: u@ci.com Message-ID: <4c2a146147ac8_61ff157c4ec1652df@s.h.c.mail> Subject: Your Friend F M wants you to join HomeRun Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="--==_mimepart_4c2a146141756_61ff157c4ec1649a8"; charset=UTF-8 Content-Transfer-Encoding: 7bit List-Unsubscribe: ----==_mimepart_4c2a146141756_61ff157c4ec1649a8 Date: Tue, 29 Jun 2010 15:42:25 +0000 Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-ID: <4c2a146145451_61ff157c4ec165040@s.h.c.mail> SGV5IGNpbmd1bGFybWVmYXJpZGEsCgpGYXJpZGEgTWFsaWsgdGhpbmtzIHlv dSBzaG91bGQgYXBwbHkgdG8gam9pbiBIb21lUnVuLCB5b3VyIHBsYWNlIGZv dC4sIFNhbiBGcmFuY2lzY28sIENBLCA5NDEyMywgVVNB ----==_mimepart_4c2a146141756_61ff157c4ec1649a8 Date: Tue, 29 Jun 2010 15:42:25 +0000 Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 Content-ID: <4c2a1461468ae_61ff157c4ec165194@s.h.c.mail> PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPkhvbWVSdW4g LSBZb3VyIEZyaWVuZCBGYXJpZGEgTWFsaWsgd2FudHMgeW91IHRvIGpvaW4g cnVuLmNvbS9vLjQ1YjBkMzgwLmdpZicgd2lkdGg9JzEnIC8+CjwvdGQ+Cjwv dHI+CjwvdGFibGU+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CjwvZGl2Pgo8L2Jv ZHk+CjwvaHRtbD4K ----==_mimepart_4c2a146141756_61ff157c4ec1649a8-- --===========================_ _= 6078796(15102)1277826164-- Comments mail-2.8.1/spec/fixtures/emails/multipart_report_emails/report_422.eml000066400000000000000000000101521436372131700260760ustar00rootroot00000000000000Return-Path: Received: from acomputer ([unix socket]) by imap01.sssssss.net (Cyrus) with LMTPA; Wed, 16 Jan 2008 13:51:42 -0800 X-Sieve: CMU Sieve 2.2 Received: from smtp.sssssss.org (unknown [198.0.0.92]) by imap01.sssssss.net (Postfix) with ESMTP id BFE6477FAE for ; Wed, 16 Jan 2008 13:51:40 -0800 (PST) Received: from ns1.sssssss.net.au (ns1.sssssss.net.au [202.0.0.246]) by smtp.sssssss.org (Postfix) with ESMTP id 96E5C6C6830 for ; Wed, 16 Jan 2008 11:08:14 -0800 (PST) Received: from ns1.sssssss.net.au (unknown [127.0.0.1]) by ns1.sssssss.net.au (Postfix) with ESMTP id E1BCEF227 for ; Thu, 17 Jan 2008 03:40:53 +1100 (EST) Received: from ns1.sssssss.net.au (ns1.sssssss.net.au [202.0.0.246]) by localhost (FormatMessage) with SMTP id ceaa681bbcb6c7f6 for ; Thu, 17 Jan 2008 03:40:53 +1100 (EST) Received: from mail11.tppppp.com.au (unknown [203.0.0.161]) by ns1.sssssss.net.au (Postfix) with ESMTP id 7F2D2F225 for ; Thu, 17 Jan 2008 03:40:52 +1100 (EST) Received: from localhost (localhost) by mail11.tppppp.com.au (envelope-from MAILER-DAEMON) (8.14.2/8.14.2) id m0GFZ1c3009410; Thu, 17 Jan 2008 03:40:52 +1100 Date: Thu, 17 Jan 2008 03:40:52 +1100 From: Mail Delivery Subsystem Message-Id: <200801161640.m0GFZ1c3009410@mail11.ttttt.com.au> To: MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="m0GFZ1c3009410.1200501652/mail11.ttttt.com.au" Subject: Warning: could not send message for past 8 hours Auto-Submitted: auto-generated (warning-timeout) Resent-Date: Thu, 17 Jan 2008 03:40:53 +1100 (EST) Resent-From: Resent-To: Resent-Message-ID: X-Spam-Status: No --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au Content-Type: text/plain ********************************************** ** THIS IS A WARNING MESSAGE ONLY ** ** YOU DO NOT NEED TO RESEND YOUR MESSAGE ** ********************************************** The original message was received at Wed, 16 Jan 2008 19:38:07 +1100 from 60-0-0-61.static.tppppp.com.au [60.0.0.61] This message was generated by mail11.tppppp.com.au ----- Transcript of session follows ----- .... while talking to mail.oooooooo.com.au.: >>> DATA <<< 452 4.2.2 ... Mailbox full ... Deferred: 452 4.2.2 ... Mailbox full <<< 503 5.0.0 Need RCPT (recipient) Warning: message still undelivered after 8 hours Will keep trying until message is 5 days old -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au Content-Type: message/delivery-status Reporting-MTA: dns; mail11.ttttt.com.au Arrival-Date: Wed, 16 Jan 2008 19:38:07 +1100 Final-Recipient: RFC822; fraser@oooooooo.com.au Action: delayed Status: 4.2.2 Remote-MTA: DNS; mail.oooooooo.com.au Diagnostic-Code: SMTP; 452 4.2.2 ... Mailbox full Last-Attempt-Date: Thu, 17 Jan 2008 03:40:52 +1100 --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au Content-Type: text/rfc822-headers Return-Path: Received: from k1s2yo86 (60-0-0-61.static.tppppp.com.au [60.0.0.61]) by mail11.tppppp.com.au (envelope-from jennifer@sss.sssssss.net.au) (8.14.2/8.14.2) with ESMTP id m0G8c0fR020461 for ; Wed, 16 Jan 2008 19:38:07 +1100 Date: Wed, 16 Jan 2008 19:38:07 +1100 From: Sydney Message-ID: <15655788.13.1200472642578.JavaMail.Administrator@mail.ttttt.com.au> Subject: Wanted MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_12_28168925.1200472642578" X-Virus-Scanned: ClamAV 0.91.2/5484/Wed Jan 16 06:31:27 2008 on mail11.tppppp.com.au X-Virus-Status: Clean --m0GFZ1c3009410.1200501652/mail11.ttttt.com.au-- mail-2.8.1/spec/fixtures/emails/multipart_report_emails/report_530.eml000066400000000000000000000102101436372131700260710ustar00rootroot00000000000000Return-Path: Received: from acomputer ([unix socket]) by imap01.sssss.net (Cyrus) with LMTPA; Sun, 23 Dec 2007 15:04:04 -0800 X-Sieve: CMU Sieve 2.2 Received: from smtp.sssss.org (unknown [198.0.0.92]) by imap01.sssss.net (Postfix) with ESMTP id E434877FB0 for ; Sun, 23 Dec 2007 15:04:03 -0800 (PST) Received: from mail12.tttttt.com.au (mail12.tttttt.com.au [203.0.0.162]) by smtp.sssss.org (Postfix) with ESMTP id 53313B42B7 for ; Sun, 23 Dec 2007 15:03:54 -0800 (PST) Received: from localhost (localhost) by mail12.tttttt.com.au (envelope-from MAILER-DAEMON) (8.14.2/8.14.2) id lBNN3rDp003436; Mon, 24 Dec 2007 10:03:53 +1100 Date: Mon, 24 Dec 2007 10:03:53 +1100 From: Mail Delivery Subsystem Message-Id: <200712232303.lBNN3rDp003436@mail12.rrrr.com.au> To: MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary="lBNN3rDp003436.1198451033/mail12.rrrr.com.au" Subject: Returned mail: see transcript for details Auto-Submitted: auto-generated (failure) X-Spam-Status: No This is a MIME-encapsulated message --lBNN3rDp003436.1198451033/mail12.rrrr.com.au The original message was received at Mon, 24 Dec 2007 10:03:47 +1100 from 60-0-0-146.static.tttttt.com.au [60.0.0.146] This message was generated by mail12.tttttt.com.au ----- The following addresses had permanent fatal errors ----- (reason: 553 5.3.0 ... Unknown E-Mail Address) ----- Transcript of session follows ----- ... while talking to mail.zzzzzz.com.: >>> DATA <<< 553 5.3.0 ... Unknown E-Mail Address 550 5.1.1 ... User unknown <<< 503 5.0.0 Need RCPT (recipient) -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. --lBNN3rDp003436.1198451033/mail12.rrrr.com.au Content-Type: message/delivery-status Reporting-MTA: dns; mail12.rrrr.com.au Received-From-MTA: DNS; 60-0-0-146.static.tttttt.com.au Arrival-Date: Mon, 24 Dec 2007 10:03:47 +1100 Final-Recipient: RFC822; edwin@zzzzzzz.com Action: failed Status: 5.3.0 Remote-MTA: DNS; mail.zzzzzz.com Diagnostic-Code: SMTP; 553 5.3.0 ... Unknown E-Mail Address Last-Attempt-Date: Mon, 24 Dec 2007 10:03:53 +1100 --lBNN3rDp003436.1198451033/mail12.rrrr.com.au Content-Type: text/rfc822-headers Return-Path: Received: from [192.168.0.3] (60-0-0-146.static.tttttt.com.au [60.0.0.146]) by mail12.tttttt.com.au (envelope-from mikel@sssss.net) (8.14.2/8.14.2) with ESMTP id lBNN3jDq002941 for ; Mon, 24 Dec 2007 10:03:47 +1100 Resent-Date: Mon, 24 Dec 2007 10:03:47 +1100 Date: Mon, 24 Dec 2007 10:03:47 +1100 Resent-Message-Id: <200712232303.lBNN3jDq002941@mail12.rrrr.com.au> Message-Id: <200712232303.lBNN3jDq002941@mail12.rrrr.com.au> Mime-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; boundary=80874BE0-2DFF-4BCB-8AA1-A00E17ACA2EA Received: from murder ([unix socket]) by imap01.sssss.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-6.fc4) with LMTPA; Sun, 23 Dec 2007 12:59:14 -0800 Received: from smtp.sssss.org (unknown [198.0.0.92]) by imap01.sssss.net (Postfix) with ESMTP id 0AC9F77EDD for ; Sun, 23 Dec 2007 12:59:14 -0800 (PST) Received: from ns1.sssss.net.au (ns1.sssss.net.au [202.0.0.246]) by smtp.sssss.org (Postfix) with ESMTP id 6FC83B42B4 for ; Sun, 23 Dec 2007 12:59:09 -0800 (PST) Received: from unicom (unknown [85.0.0.121]) by ns1.sssss.net.au (Postfix) with ESMTP id 85ED5F1F7 for ; Mon, 24 Dec 2007 07:59:02 +1100 (EST) Received: from [85.0.0.121] by mail.zzzzzz.com; , 23 Dec 2007 12:57:34 -0800 X-Mailer: Apple Mail (2.753) From: postoffice Subject: Returned mail: User unknown Resent-From: mikel@sssss.net Auto-Submitted: auto-generated (failure) To: "Merrill" X-Virus-Scanned: ClamAV 0.91.2/5229/Mon Dec 24 07:36:55 2007 on mail12.tttttt.com.au X-Virus-Status: Clean --lBNN3rDp003436.1198451033/mail12.rrrr.com.au-- mail-2.8.1/spec/fixtures/emails/plain_emails/000077500000000000000000000000001436372131700211655ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/plain_emails/basic_email.eml000066400000000000000000000030161436372131700241140ustar00rootroot00000000000000Delivered-To: raasdnil@gmail.com Received: by 10.140.178.13 with SMTP id a13cs354079rvf; Fri, 21 Nov 2008 20:05:05 -0800 (PST) Received: by 10.151.44.15 with SMTP id w15mr2254748ybj.98.1227326704711; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Return-Path: Received: from mail11.tpgi.com.au (mail11.tpgi.com.au [203.12.160.161]) by mx.google.com with ESMTP id 10si5117885gxk.81.2008.11.21.20.05.03; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Received-SPF: neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) client-ip=203.12.160.161; Authentication-Results: mx.google.com; spf=neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) smtp.mail=test@lindsaar.net X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed Received: from [192.0.0.253] (60-241-138-146.static.tpgi.com.au [60.0.0.146]) by mail11.tpgi.com.au (envelope-from test@lindsaar.net) (8.14.3/8.14.3) with ESMTP id mAM44xew022221 for ; Sat, 22 Nov 2008 15:05:01 +1100 Message-Id: <6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net> From: Mikel Lindsaar To: Mikel Lindsaar Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Subject: Testing 123 Date: Sat, 22 Nov 2008 15:04:59 +1100 X-Mailer: Apple Mail (2.929.2) Plain email. Hope it works well! Mikel mail-2.8.1/spec/fixtures/emails/plain_emails/basic_email_lf.eml000066400000000000000000000027571436372131700246100ustar00rootroot00000000000000Delivered-To: raasdnil@gmail.com Received: by 10.140.178.13 with SMTP id a13cs354079rvf; Fri, 21 Nov 2008 20:05:05 -0800 (PST) Received: by 10.151.44.15 with SMTP id w15mr2254748ybj.98.1227326704711; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Return-Path: Received: from mail11.tpgi.com.au (mail11.tpgi.com.au [203.12.160.161]) by mx.google.com with ESMTP id 10si5117885gxk.81.2008.11.21.20.05.03; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Received-SPF: neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) client-ip=203.12.160.161; Authentication-Results: mx.google.com; spf=neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) smtp.mail=test@lindsaar.net X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed Received: from [192.0.0.253] (60-241-138-146.static.tpgi.com.au [60.0.0.146]) by mail11.tpgi.com.au (envelope-from test@lindsaar.net) (8.14.3/8.14.3) with ESMTP id mAM44xew022221 for ; Sat, 22 Nov 2008 15:05:01 +1100 Message-Id: <6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net> From: Mikel Lindsaar To: Mikel Lindsaar Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Subject: Testing 123 Date: Sat, 22 Nov 2008 15:04:59 +1100 X-Mailer: Apple Mail (2.929.2) Plain email. Hope it works well! Mikel mail-2.8.1/spec/fixtures/emails/plain_emails/mix_caps_content_type.eml000066400000000000000000000005401436372131700262610ustar00rootroot00000000000000From joe@company.com Fri Feb 19 08:41:30 2010 From: Big Bug bb@bug.com To: rubymail@ruby-lang.org Subject: undef method parameter bug Date: Fri, 19 Feb 2010 10:08:29 +0300 MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Message-Id: 201002191008.30117.foo.bar@company.com foo bar mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email.eml000066400000000000000000000010561436372131700236260ustar00rootroot00000000000000From jamis_buck@byu.edu Mon May 2 16:07:05 2005 Mime-Version: 1.0 (Apple Message framework v622) Content-Transfer-Encoding: base64 Message-Id: Content-Type: text/plain; charset=EUC-KR; format=flowed To: willard15georgina@jamis.backpackit.com From: Jamis Buck Subject: =?EUC-KR?Q?NOTE:_=C7=D1=B1=B9=B8=BB=B7=CE_=C7=CF=B4=C2_=B0=CD?= Date: Mon, 2 May 2005 16:07:05 -0600 tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin wLogSmFtaXPA1LTPtNku mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email10.eml000066400000000000000000000017201436372131700237650ustar00rootroot00000000000000Return-Path: Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id C1B953B4CB6 for ; Tue, 10 May 2005 15:27:05 -0500 Received: from SMS-GTYxxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id ca for ; Tue, 10 May 2005 15:27:04 -0500 Received: from xxx.xxxx.xxx by SMS-GTYxxx.xxxx.xxx with ESMTP id j4AKR3r23323 for ; Tue, 10 May 2005 15:27:03 -0500 Date: Tue, 10 May 2005 15:27:03 -0500 From: xxx@xxxx.xxx Sender: xxx@xxxx.xxx To: xxxxxxxxxxx@xxxx.xxxx.xxx Message-Id: X-Original-To: xxxxxxxxxxx@xxxx.xxxx.xxx Delivered-To: xxx@xxxx.xxx Importance: normal Content-Type: text/plain; charset=X-UNKNOWN Test test. Hi. Waving. m ---------------------------------------------------------------- Sent via Bell Mobility's Text Messaging service. Envoyé par le service de messagerie texte de Bell Mobilité. ---------------------------------------------------------------- mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email5.eml000066400000000000000000000016431436372131700237150ustar00rootroot00000000000000Return-Path: Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id C1B953B4CB6 for ; Tue, 10 May 2005 15:27:05 -0500 Received: from SMS-GTYxxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id ca for ; Tue, 10 May 2005 15:27:04 -0500 Received: from xxx.xxxx.xxx by SMS-GTYxxx.xxxx.xxx with ESMTP id j4AKR3r23323 for ; Tue, 10 May 2005 15:27:03 -0500 Date: Tue, 10 May 2005 15:27:03 -0500 From: xxx@xxxx.xxx Sender: xxx@xxxx.xxx To: xxxxxxxxxxx@xxxx.xxxx.xxx Message-Id: X-Original-To: xxxxxxxxxxx@xxxx.xxxx.xxx Delivered-To: xxx@xxxx.xxx Importance: normal Test test. Hi. Waving. m ---------------------------------------------------------------- Sent via Bell Mobility's Text Messaging service. Envoyé par le service de messagerie texte de Bell Mobilité. ---------------------------------------------------------------- mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email6.eml000066400000000000000000000017171436372131700237200ustar00rootroot00000000000000Return-Path: Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id C1B953B4CB6 for ; Tue, 10 May 2005 15:27:05 -0500 Received: from SMS-GTYxxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id ca for ; Tue, 10 May 2005 15:27:04 -0500 Received: from xxx.xxxx.xxx by SMS-GTYxxx.xxxx.xxx with ESMTP id j4AKR3r23323 for ; Tue, 10 May 2005 15:27:03 -0500 Date: Tue, 10 May 2005 15:27:03 -0500 From: xxx@xxxx.xxx Sender: xxx@xxxx.xxx To: xxxxxxxxxxx@xxxx.xxxx.xxx Message-Id: X-Original-To: xxxxxxxxxxx@xxxx.xxxx.xxx Delivered-To: xxx@xxxx.xxx Importance: normal Content-Type: text/plain; charset=us-ascii Test test. Hi. Waving. m ---------------------------------------------------------------- Sent via Bell Mobility's Text Messaging service. Envoyé par le service de messagerie texte de Bell Mobilité. ---------------------------------------------------------------- mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email8.eml000066400000000000000000000035671436372131700237270ustar00rootroot00000000000000From xxxxxxxxx.xxxxxxx@gmail.com Sun May 8 19:07:09 2005 Return-Path: Message-ID: Date: Sun, 8 May 2005 14:09:11 -0500 From: xxxxxxxxx xxxxxxx Reply-To: xxxxxxxxx xxxxxxx To: xxxxx xxxx Subject: Fwd: Signed email causes file attachments In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5028_7368284.1115579351471" References: ------=_Part_5028_7368284.1115579351471 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline We should not include these files or vcards as attachments. ---------- Forwarded message ---------- From: xxxxx xxxxxx Date: May 8, 2005 1:17 PM Subject: Signed email causes file attachments To: xxxxxxx@xxxxxxxxxx.com Hi, Test attachments oddly encoded with japanese charset. ------=_Part_5028_7368284.1115579351471 Content-Type: application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3 Content-Transfer-Encoding: base64 Content-Disposition: attachment MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGFDCCAs0w ggI2oAMCAQICAw5c+TANBgkqhkiG9w0BAQQFADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3VpbmcgQ0EwHhcNMDUwMzI5MDkzOTEwWhcNMDYwMzI5MDkzOTEwWjBCMR8wHQYDVQQD ExZUaGF3dGUgRnJlZW1haWwgTWVtYmVyMR8wHQYJKoZIhvcNAQkBFhBzbWhhdW5jaEBtYWMuY29t MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn90dPsYS3LjfMY211OSYrDQLzwNYPlAL 7+/0XA+kdy8/rRnyEHFGwhNCDmg0B6pxC7z3xxJD/8GfCd+IYUUNUQV5m9MkxfP9pTVXZVIYLaBw ------=_Part_5028_7368284.1115579351471-- mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_bad_time.eml000066400000000000000000000045171436372131700254570ustar00rootroot00000000000000Return-Path: Received: from murder ([unix socket]) by imap1.AAAAAAAAA.net (Cyrus v2.2.12-Invoca-RPM-2.2.12-6.fc4) with LMTPA; Mon, 30 Jun 2008 02:34:00 -0700 X-Sieve: CMU Sieve 2.2 Received: from smtp2.BBBBBBBBBBB.org (unknown [10.254.15.30]) by imap1.AAAAAAAAA.net (Postfix) with ESMTP id 9444077D75 for ; Mon, 30 Jun 2008 02:34:00 -0700 (PDT) Received: from localhost (unknown [92.47.238.91]) by smtp2.BBBBBBBBBBB.org (Postfix) with ESMTP id 44D0110011 for ; Mon, 9 Jun 2008 12:24:02 -0700 (PDT) Message-ID: <86a2019dbec6$caa86cc0$390b0485@auracom.net> From: "=?windows-1251?B?wPLo6u7iYQ==?=" To: Subject: [0]: XXXXXXX XXXXX XXXXX ! Date: Mon, 30 Jun 3609 15:33:50 +0600 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=----=_NextPart_000_0023_08_E8CD50F3.4EF2F754 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-CSI-MailScanner-Information: Please contact the ISP for more information X-CSI-MailScanner: Found to be clean X-CSI-MailScanner-SpamCheck: spam, ORDB-RBL X-CSI-MailScanner-From: yusuf75thu@auracom.net X-Spam-Status: Yes This is a multi-part message in MIME format. ------=_NextPart_000_0023_08_E8CD50F3.4EF2F754 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable Filter2: This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ------=_NextPart_000_0023_08_E8CD50F3.4EF2F754 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
    This message has been scanned for viruses and
    dangerous content by MailScanner, and is
    believed to be clean. ------=_NextPart_000_0023_08_E8CD50F3.4EF2F754-- mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_double_at_in_header.eml000066400000000000000000000010601436372131700276350ustar00rootroot00000000000000From jamis_buck@byu.edu Mon May 2 16:07:05 2005 Mime-Version: 1.0 (Apple Message framework v622) Content-Transfer-Encoding: base64 Message-Id: Content-Type: text/plain; charset=EUC-KR; format=flowed To: willard15georgina@jamis.backpackit.com From: Jamis Buck Subject: =?EUC-KR?Q?NOTE:_=C7=D1=B1=B9=B8=BB=B7=CE_=C7=CF=B4=C2_=B0=CD?= Date: Mon, 2 May 2005 16:07:05 -0600 tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin wLogSmFtaXPA1LTPtNku mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_incorrect_header.eml000066400000000000000000000016361436372131700272120ustar00rootroot00000000000000Received: from xxx.xxx.xxx ([xxx.xxx.xxx.xxx] verified) by xxx.com (CommuniGate Pro SMTP 4.2.8) with SMTP id 2532598 for xxx@xxx.com; Wed, 23 Feb 2005 17:51:49 -0500 Received-SPF: softfail receiver=xxx.com; client-ip=xxx.xxx.xxx.xxx; envelope-from=xxx@xxx.xxx quite Delivered-To: xxx@xxx.xxx Received: by xxx.xxx.xxx (Wostfix, from userid xxx) id 0F87F333; Wed, 23 Feb 2005 16:16:17 -0600 Date: Wed, 23 Feb 2005 18:20:17 -0400 From: "xxx xxx" Message-ID: <4D6AA7EB.6490534@xxx.xxx> To: xxx@xxx.com Subject: Stop adware/spyware once and for all. X-Scanned-By: MIMEDefang 2.11 (www dot roaringpenguin dot com slash mimedefang) You are infected with: Ad Ware and Spy Ware Get your free scan and removal download now, before it gets any worse. http://xxx.xxx.info?aid=3D13&?stat=3D4327kdzt no more? (you will still be infected) http://xxx.xxx.info/discon/?xxx@xxx.com mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_multiple_from.eml000066400000000000000000000017741436372131700265730ustar00rootroot00000000000000Delivered-To: tim@powerupdev.com Return-Path: To: tim@powerupdev.com concierge@powerupdev.com From: tim@powerupdev.com concierge@powerupdev.com Subject: /home/svn/public/minebox revision 214 Reply-to: tim@powerupdev.com concierge@powerupdev.com Message-Id: <20071022234523.5BD8E86D2@mangaverde.net> Date: Mon, 22 Oct 2007 23:45:23 +0000 (UTC)

    recordkick 2007-10-22 23:45:23 +0000 (Mon, 22 Oct 2007)

    test subversion


    Modified:
    trunk/README
    ===================================================================
    --- trunk/README\t2007-10-22
    23:41:34 UTC (rev 213)
    +++ trunk/README\t2007-10-22 23:45:23 UTC (rev 214)
    @@ -1,5 +1,5 @@
     == Welcome
    to Rails
    -Test
    +Tedst
     Rails is a web-application and persistence framework that includes everything
     needed
    to create database-backed web-applications according to the
     Model-View-Control pattern of separation. This pattern
    splits the view (also
    
    
    
    mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_quoted_with_0d0a.eml000066400000000000000000000011701436372131700270430ustar00rootroot00000000000000Mime-Version: 1.0 (Apple Message framework v730) Message-Id: <9169D984-4E0B-45EF-82D4-8F5E53AD7012@example.com> From: foo@example.com Subject: testing Date: Mon, 6 Jun 2005 22:21:22 +0200 To: blah@example.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain A fax has arrived from remote ID ''.=0D=0A-----------------------= -------------------------------------=0D=0ATime: 3/9/2006 3:50:52= PM=0D=0AReceived from remote ID: =0D=0AInbound user ID XXXXXXXXXX, r= outing code XXXXXXXXX=0D=0AResult: (0/352;0/0) Successful Send=0D=0AP= age record: 1 - 1=0D=0AElapsed time: 00:58 on channel 11=0D=0A mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_reply.eml000066400000000000000000000027101436372131700250370ustar00rootroot00000000000000Return-Path: Received: from me ([unix socket]) by xxxxx1.xxxx.net (Cyrus v2.2.12) with LMTPA; Sun, 18 Nov 2007 00:56:33 -0800 Received: from smtp.xxxx.org (unknown [127.0.0.1]) by xxxxx1.xxxx.net (Postfix) with ESMTP id F128477EB5; Sun, 18 Nov 2007 00:56:32 -0800 (PST) Received: from omta02sl.mx.bigpond.com (omta02sl.mx.bigpond.com [144.140.93.154]) by smtp.xxxx.org (Postfix) with ESMTP id 2D567ACC08; Sun, 18 Nov 2007 00:56:28 -0800 (PST) Received: from oaamta05sl.mx.bigpond.com ([124.183.219.10]) by omta02sl.mx.bigpond.com with ESMTP id <20071118085627.YVPI22254.omta02sl.mx.bigpond.com@oaamta05sl.mx.bigpond.com>; Sun, 18 Nov 2007 08:56:27 +0000 Received: from [10.0.0.1] (really [124.183.219.10]) by oaamta05sl.mx.bigpond.com with ESMTP id <20071118085627.TQWF6995.oaamta05sl.mx.bigpond.com@[10.0.0.1]>; Sun, 18 Nov 2007 08:56:27 +0000 Message-ID: <473FFE27.20003@xxx.org> Date: Sun, 18 Nov 2007 19:56:07 +1100 From: Testing User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Mikel Lindsaar Subject: Re: Test reply email References: <473FF3B8.9020707@xxx.org> <348F04F142D69C21-291E56D292BC@xxxx.net> In-Reply-To: <348F04F142D69C21-291E56D292BC@xxxx.net> Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Message body mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_simple.eml000066400000000000000000000007171436372131700252020ustar00rootroot00000000000000From mike@nowhere.com Return-Path: Received: from mikel091a by oaamta05sl.mx.bigpond.com with SMTP id <20071021093820.JFMT24025.oaamta05sl.mx.bigpond.com@mikel091a> for ; Sun, 21 Oct 2007 19:38:20 +1000 Date: Sun, 21 Oct 2007 19:38:13 +1000 From: Mikel Lindsaar To: Mikel Message-Id: <009601c813c6$19df3510$0437d30a@mikel091a> Subject: Testing outlook Hello Mikel mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_string_in_date_field.eml000066400000000000000000000013071436372131700300410ustar00rootroot00000000000000From mikel@me.com Mon May 2 16:07:05 2005 Mime-Version: 1.0 (Apple Message framework v622) Received: from jsj1wlrmd001.webex.com (by jsj1wlrmd001.webex.com (8.12.10/8.12.11) with ESMTP id m8MKKPTs022429 for ; Mon, 22 Sep 2008 20:20:25 GMT Content-Transfer-Encoding: base64 Message-Id: Content-Type: text/plain; charset=EUC-KR; format=flowed To: bob@bob.com From: mikel@me.com Subject: =?EUC-KR?Q?NOTE:_=C7=D1=B1=B9=B8=BB=B7=CE_=C7=CF=B4=C2_=B0=CD?= Date: Sat, 20 Sep 2008 20:04:30 +0300 (ùòåï ÷éõ éøåùìéí) tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin wLogSmFtaXPA1LTPtNku mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_trailing_dot.eml000066400000000000000000000023431436372131700263650ustar00rootroot00000000000000Delivered-To: xxx@xxx.com Received: by 10.67.31.8 with SMTP id i8cs1195ugj; Mon, 22 Sep 2008 13:45:18 -0700 (PDT) Received: by 10.100.207.5 with SMTP id e5mr3483815ang.104.1222110393505; Mon, 22 Sep 2008 12:06:33 -0700 (PDT) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id c2si899474ana.10.2008.09.22.12.06.28; Mon, 22 Sep 2008 12:06:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of noreply@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of noreply@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=noreply@rubyforge.org Received: by rubyforge.org (Postfix, from userid 502) id 8FB1518581AC; Mon, 22 Sep 2008 15:06:28 -0400 (EDT) To: noreply@rubyforge.org From: Sandy M. Subject: [skynet-help][60666] How are intermediate files handled in SkyNet? Content-type: text/plain; charset=UTF-8 Message-Id: <20080922190628.8FB1518581AC@rubyforge.org> Date: Mon, 22 Sep 2008 15:06:28 -0400 (EDT) Testing, testing, 123.mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_with_at_display_name.eml000066400000000000000000000031001436372131700300620ustar00rootroot00000000000000Delivered-To: raasdnil@gmail.com Received: by 10.140.178.13 with SMTP id a13cs354079rvf; Fri, 21 Nov 2008 20:05:05 -0800 (PST) Received: by 10.151.44.15 with SMTP id w15mr2254748ybj.98.1227326704711; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Return-Path: Received: from mail11.tpgi.com.au (mail11.tpgi.com.au [203.12.160.161]) by mx.google.com with ESMTP id 10si5117885gxk.81.2008.11.21.20.05.03; Fri, 21 Nov 2008 20:05:04 -0800 (PST) Received-SPF: neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) client-ip=203.12.160.161; Authentication-Results: mx.google.com; spf=neutral (google.com: 203.12.160.161 is neither permitted nor denied by domain of test@lindsaar.net) smtp.mail=test@lindsaar.net X-TPG-Junk-Status: Message not scanned X-TPG-Antivirus: Passed Received: from [192.0.0.253] (60-241-138-146.static.tpgi.com.au [60.0.0.146]) by mail11.tpgi.com.au (envelope-from test@lindsaar.net) (8.14.3/8.14.3) with ESMTP id mAM44xew022221 for ; Sat, 22 Nov 2008 15:05:01 +1100 Message-Id: <6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net> From: Mikel Lindsaar , jack@lindsar.com To: smith@gmail.com, Mikel@Lindsaar , tom@gmail.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Subject: Testing 123 Date: Sat, 22 Nov 2008 15:04:59 +1100 X-Mailer: Apple Mail (2.929.2) Plain email. Hope it works well! Mikel mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_with_bad_date.eml000066400000000000000000000042341436372131700264650ustar00rootroot00000000000000Return-Path: X-Original-To: external@xxx.xxxxxxxx.xxx.xx Delivered-To: external@xxx.xxxxxxxx.xxx.xx Received: from server.xxx.xxxxxxxx.xxx.xx (localhost.xxxxxxxx.xxx.xx [127.0.0.1]) by server.xxx.xxxxxxxx.xxx.xx (Postfix) with ESMTP id 0173828456 for ; Mon, 5 Nov 2007 20:17:37 +1100 (EST) Received: from server.xxx.xxxxxxxx.xxx.xx (server.xxx.xxxxxxxx.xxx.xx [10.130.1.250]) by localhost (FormatMessage) with SMTP id d7be4d19ed6d330c for ; Mon, 05 Nov 2007 20:17:37 +1100 (EST) Received: from server.sydney.xxxxxxxx.xxx.xx (unknown [10.130.2.6]) by server.xxx.xxxxxxxx.xxx.xx (Postfix) with ESMTP id BB00328442 for ; Mon, 5 Nov 2007 20:17:37 +1100 (EST) Received: from dircomm (unknown [10.130.2.8]) by server.sydney.xxxxxxxx.xxx.xx (Postfix) with ESMTP id 20A692841F for ; Mon, 5 Nov 2007 20:18:24 +1100 (EST) X-Mailbox-Line: From subventive@vodtravel.com Message-ID: <000001c81a67$a4450700$0100007f@localhost> From: "Darrell Shaw" To: Subject: Microsoft Vlsta & Office2007, Just released for 79$ Save 1599.95$ 0ff Retai| Date: Pn, 29 paX 2007 21:13:00 +0100 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.3416 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.150 X-CSI-TMailScanner-Information: Please contact the ISP for more information X-CSI-TMailScanner: Found to be clean X-CSI-TMailScanner-SpamCheck: not spam, SpamAssassin (score=1.87, required 4, autolearn=disabled, INVALID_DATE 0.23, RAZOR2_CF_RANGE_51_100 1.49, RAZOR2_CHECK 0.15) X-CSI-TMailScanner-SpamScore: s X-TMailScanner-From: subventive@vodtravel.com Resent-Date: Mon, 05 Nov 2007 20:17:37 +1100 (EST) Resent-From: Resent-To: Resent-Message-ID: X-UID: 4702 Status: RO hotnewsoft . com mail-2.8.1/spec/fixtures/emails/plain_emails/raw_email_with_partially_quoted_subject.eml000066400000000000000000000010411436372131700320340ustar00rootroot00000000000000From jamis@37signals.com Mon May 2 16:07:05 2005 Mime-Version: 1.0 (Apple Message framework v622) Content-Transfer-Encoding: base64 Message-Id: Content-Type: text/plain; charset=EUC-KR; format=flowed To: jamis@37signals.com From: Jamis Buck Subject: Re: Test: =?UTF-8?B?Iua8ouWtlyI=?= mid =?UTF-8?B?Iua8ouWtlyI=?= tail Date: Mon, 2 May 2005 16:07:05 -0600 tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin wLogSmFtaXPA1LTPtNku mail-2.8.1/spec/fixtures/emails/rfc2822/000077500000000000000000000000001436372131700176205ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/rfc2822/example01.eml000066400000000000000000000003501436372131700221110ustar00rootroot00000000000000From: John Doe To: Mary Smith Subject: Saying Hello Date: Fri, 21 Nov 1997 09:55:06 -0600 Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example02.eml000066400000000000000000000004301436372131700221110ustar00rootroot00000000000000From: John Doe Sender: Michael Jones To: Mary Smith Subject: Saying Hello Date: Fri, 21 Nov 1997 09:55:06 -0600 Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example03.eml000066400000000000000000000004351436372131700221170ustar00rootroot00000000000000From: "Joe Q. Public" To: Mary Smith , jdoe@example.org, Who? Cc: , "Giant; \"Big\" Box" Date: Tue, 1 Jul 2003 10:52:37 +0200 Message-ID: <5678.21-Nov-1997@example.com> Hi everyone. mail-2.8.1/spec/fixtures/emails/rfc2822/example04.eml000066400000000000000000000003461436372131700221210ustar00rootroot00000000000000From: Pete To: A Group:Chris Jones ,joe@where.test,John ; Cc: Undisclosed recipients:; Date: Thu, 13 Feb 1969 23:32:54 -0330 Message-ID: Testing. mail-2.8.1/spec/fixtures/emails/rfc2822/example05.eml000066400000000000000000000003501436372131700221150ustar00rootroot00000000000000From: John Doe To: Mary Smith Subject: Saying Hello Date: Fri, 21 Nov 1997 09:55:06 -0600 Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example06.eml000066400000000000000000000005421436372131700221210ustar00rootroot00000000000000From: Mary Smith To: John Doe Reply-To: "Mary Smith: Personal Account" Subject: Re: Saying Hello Date: Fri, 21 Nov 1997 10:01:10 -0600 Message-ID: <3456@example.net> In-Reply-To: <1234@local.machine.example> References: <1234@local.machine.example> This is a reply to your hello. mail-2.8.1/spec/fixtures/emails/rfc2822/example07.eml000066400000000000000000000005151436372131700221220ustar00rootroot00000000000000To: "Mary Smith: Personal Account" From: John Doe Subject: Re: Saying Hello Date: Fri, 21 Nov 1997 11:00:00 -0600 Message-ID: In-Reply-To: <3456@example.net> References: <1234@local.machine.example> <3456@example.net> This is a reply to your reply. mail-2.8.1/spec/fixtures/emails/rfc2822/example08.eml000066400000000000000000000006311436372131700221220ustar00rootroot00000000000000Resent-From: Mary Smith Resent-To: Jane Brown Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800 Resent-Message-ID: <78910@example.net> From: John Doe To: Mary Smith Subject: Saying Hello Date: Fri, 21 Nov 1997 09:55:06 -0600 Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example09.eml000066400000000000000000000006771436372131700221350ustar00rootroot00000000000000Received: from x.y.test by example.net via TCP with ESMTP id ABC12345 for ; 21 Nov 1997 10:05:43 -0600 Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600 From: John Doe To: Mary Smith Subject: Saying Hello Date: Fri, 21 Nov 1997 09:55:06 -0600 Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example10.eml000066400000000000000000000007511436372131700221160ustar00rootroot00000000000000From: Pete(A wonderful \) chap) To:A Group(Some people) :Chris Jones , joe@example.org, John (my dear friend); (the end of the group) Cc:(Empty list)(start)Undisclosed recipients :(nobody(that I know)) ; Date: Thu, 13 Feb 1969 23:32 -0330 (Newfoundland Time) Message-ID: Testing. mail-2.8.1/spec/fixtures/emails/rfc2822/example11.eml000066400000000000000000000003341436372131700221140ustar00rootroot00000000000000From: Joe Q. Public To: Mary Smith <@machine.tld:mary@example.net>, , jdoe@test . example Date: Tue, 1 Jul 2003 10:52:37 +0200 Message-ID: <5678.21-Nov-1997@example.com> Hi everyone. mail-2.8.1/spec/fixtures/emails/rfc2822/example12.eml000066400000000000000000000003371436372131700221200ustar00rootroot00000000000000From: John Doe To: Mary Smith Subject: Saying Hello Date: 21 Nov 97 09:55:06 GMT Message-ID: <1234@local.machine.example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example13.eml000066400000000000000000000004601436372131700221160ustar00rootroot00000000000000From : John Doe To : Mary Smith __ Subject : Saying Hello Date : Fri, 21 Nov 1997 09(comment): 55 : 06 -0600 Message-ID : <1234 @ local(blah) .machine .example> This is a message just to say hello. So, "Hello". mail-2.8.1/spec/fixtures/emails/rfc2822/example14.eml000066400000000000000000000007461436372131700221260ustar00rootroot00000000000000From test@example.com Mon Aug 22 09:45:15 2011 Date: Fri, 19 Aug 2011 10:47:17 +0900 From: Atsushi Yoshida Reply-To: rudeboyjet@gmail.com Subject: Re: TEST =?ISO-2022-JP?B?GyRCJUYlOSVIGyhC?= =?ISO-2022-JP?B?GyRCJUYlOSVIGyhC?= To: rudeboyjet@gmail.com Message-Id: <0CC5E11ED2C1D@example.com> In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Hello mail-2.8.1/spec/fixtures/emails/rfc6532/000077500000000000000000000000001436372131700176225ustar00rootroot00000000000000mail-2.8.1/spec/fixtures/emails/rfc6532/utf8_headers.eml000066400000000000000000000001641436372131700227030ustar00rootroot00000000000000From: "Jöhn Doe" To: "Märy Smith" Subject: Säying Hello body mail-2.8.1/spec/fixtures/emails/sample_output_multipart000066400000000000000000000000001436372131700234430ustar00rootroot00000000000000mail-2.8.1/spec/mail/000077500000000000000000000000001436372131700143275ustar00rootroot00000000000000mail-2.8.1/spec/mail/attachments_list_spec.rb000066400000000000000000000316321436372131700212410ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' def encode_base64(str) Mail::Encodings::Base64.encode(str) end def check_decoded(actual, expected) expect(actual.encoding).to eq Encoding::BINARY expect(actual).to eq expected.dup.force_encoding(Encoding::BINARY) end describe "Attachments" do before(:each) do @mail = Mail.new @test_png = read_raw_fixture('attachments', 'test.png') end describe "from direct content" do it "should work" do @mail.attachments['test.png'] = @test_png expect(@mail.attachments['test.png'].filename).to eq 'test.png' check_decoded(@mail.attachments[0].decoded, @test_png) end it "should work out magically the mime_type" do @mail.attachments['test.png'] = @test_png expect(@mail.attachments[0].mime_type).to eq 'image/png' end it "should assign the filename" do @mail.attachments['test.png'] = @test_png expect(@mail.attachments[0].filename).to eq 'test.png' end it "should assign mime-encoded multibyte filename" do @mail.attachments['てすと.txt'] = read_raw_fixture('attachments', 'てすと.txt') expect(Mail::Utilities.blank?(@mail.attachments)).not_to eq true expect(Mail::Encodings.decode_encode(@mail.attachments[0].filename, :decode)).to eq 'てすと.txt' end end describe "from a supplied Hash" do it "should work" do @mail.attachments['test.png'] = { :content => @test_png } expect(@mail.attachments[0].filename).to eq 'test.png' check_decoded(@mail.attachments[0].decoded, @test_png) end it "should allow you to override the content_type" do @mail.attachments['test.png'] = { :content => @test_png, :content_type => "application/x-gzip" } expect(@mail.attachments[0].content_type).to eq 'application/x-gzip' end it "should allow you to override the mime_type" do @mail.attachments['test.png'] = { :content => @test_png, :mime_type => "application/x-gzip" } expect(@mail.attachments[0].mime_type).to eq 'application/x-gzip' end it "should allow you to override the mime_type" do @mail.attachments['invoice.jpg'] = { :data => "you smiling", :mime_type => "image/x-jpg", :transfer_encoding => "base64" } expect(@mail.attachments[0].mime_type).to eq 'image/x-jpg' end end describe "decoding and encoding" do it "should set its content_transfer_encoding" do @mail.attachments['test.png'] = { :content => @test_png } @mail.ready_to_send! expect(@mail.attachments[0].content_transfer_encoding).to eq 'base64' end it "should encode its body to base64" do @mail.attachments['test.png'] = { :content => @test_png } @mail.ready_to_send! expect(@mail.attachments[0].encoded).to include(encode_base64(@test_png)) end it "should allow you to pass in an encoded attachment with an encoding" do encoded_data = encode_base64(@test_png) @mail.attachments['test.png'] = { :content => encoded_data, :encoding => 'base64' } check_decoded(@mail.attachments[0].decoded, @test_png) end it "should allow you set a mime type and encoding without overriding the encoding" do encoded = encode_base64('') @mail.attachments['test.png'] = { :mime_type => 'text/xml', :content => encoded, :encoding => 'base64' } expect(@mail.attachments[0].content_transfer_encoding).to eq 'base64' check_decoded(@mail.attachments[0].decoded, '') end it "should not allow you to pass in an encoded attachment with an unknown encoding" do base64_encoded_data = encode_base64(@test_png) expect {@mail.attachments['test.png'] = { :content => base64_encoded_data, :encoding => 'weird_encoding' }}.to raise_error(/Do not know how to handle Content Transfer Encoding weird_encoding/) end it "should be able to call read on the attachment to return the decoded data" do @mail.attachments['test.png'] = { :content => @test_png } expected = @mail.attachments[0].read.force_encoding(@test_png.encoding) expect(expected).to eq @test_png end it "should only add one newline between attachment body and boundary" do contents = "I have\ntwo lines with trailing newlines\n\n" @mail.attachments['text.txt'] = { :content => contents} encoded = @mail.encoded regex = /\r\n#{Regexp.escape(contents.gsub(/\n/, "\r\n"))}\r\n--#{@mail.boundary}--\r\n\Z/ expect(encoded).to match regex end end describe "multiple attachments" do it "should allow you to pass in more than one attachment" do mail = Mail.new mail.attachments['test.pdf'] = read_raw_fixture('attachments', 'test.pdf') mail.attachments['test.gif'] = read_raw_fixture('attachments', 'test.gif') mail.attachments['test.jpg'] = read_raw_fixture('attachments', 'test.jpg') mail.attachments['test.zip'] = read_raw_fixture('attachments', 'test.zip') expect(mail.attachments[0].filename).to eq 'test.pdf' expect(mail.attachments[1].filename).to eq 'test.gif' expect(mail.attachments[2].filename).to eq 'test.jpg' expect(mail.attachments[3].filename).to eq 'test.zip' end end describe "inline attachments" do it "should set the content_disposition to inline or attachment as appropriate" do mail = Mail.new mail.attachments['test.pdf'] = read_raw_fixture('attachments', 'test.pdf') expect(mail.attachments['test.pdf'].content_disposition).to eq 'attachment; filename=test.pdf' mail.attachments.inline['test.png'] = read_raw_fixture('attachments', 'test.png') expect(mail.attachments.inline['test.png'].content_disposition).to eq 'inline; filename=test.png' end it "should return a cid" do mail = Mail.new mail.attachments.inline['test.png'] = @test_png expect(mail.attachments['test.png'].url).to eq "cid:#{mail.attachments['test.png'].cid}" end it "should respond true to inline?" do mail = Mail.new mail.attachments.inline['test.png'] = @test_png expect(mail.attachments['test.png']).to be_inline end end describe "getting the content ID from an attachment" do before(:each) do @mail = Mail.new @mail.attachments['test.gif'] = read_raw_fixture('attachments', 'test.gif') expect(@mail.attachments['test.gif'].has_content_id?).to be_falsey @mail.attachments['test.gif'].add_content_id @cid = @mail.attachments['test.gif'].content_id expect(@cid).not_to be_nil end it "should return a valid content-id on inline attachments" do field = Mail::ContentIdField.new(@cid) expect(field.errors).to be_empty end it "should provide a URL escaped content_id (without brackets) for use inside an email" do @inline = @mail.attachments['test.gif'].cid expect(@inline).to eq Mail::Utilities.uri_parser.escape(@cid.gsub(/^$/, '')) end end describe "setting the content type correctly" do it "should set the content type to multipart/mixed if none given and you add an attachment" do mail = Mail.new mail.attachments['test.pdf'] = read_raw_fixture('attachments', 'test.pdf') mail.encoded expect(mail.mime_type).to eq 'multipart/mixed' end it "allows you to set the attachment before the content type" do mail = Mail.new mail.attachments["test.png"] = read_raw_fixture('attachments', 'test.png') mail.body = "Lots of HTML" mail.mime_version = '1.0' mail.content_type = 'text/html; charset=UTF-8' end end describe "should handle filenames with non-7bit characters correctly" do it "should not raise an exception with a filename that contains a non-7bit-character" do filename = "f\u00f6\u00f6.b\u00e4r" expect(filename.encoding).to eq Encoding::UTF_8 mail = Mail.new expect { mail.attachments[filename] = read_raw_fixture('attachments', 'test.pdf') }.not_to raise_error end end end describe "reading emails with attachments" do describe "test emails" do it "should find the attachment using content location" do mail = read_fixture('emails/attachment_emails/attachment_content_location.eml') expect(mail.attachments.length).to eq 1 end it "should find an attachment defined with 'name' and Content-Disposition: attachment" do mail = read_fixture('emails/attachment_emails/attachment_content_disposition.eml') expect(mail.attachments.length).to eq 1 end it "should use the content-disposition filename over the content-type filename or name" do mail = read_fixture('emails/attachment_emails/attachment_content_disposition.eml') expect(mail.attachments[0].filename).to eq 'api.rb' end it "should decode an attachment" do mail = read_fixture('emails/attachment_emails/attachment_pdf.eml') expect(mail.attachments[0].decoded.length).to eq 1026 end it "should decode an attachment with linefeeds" do mail = read_fixture('emails/attachment_emails/attachment_pdf_lf.eml') expect(mail.attachments.size).to eq(1) expect(mail.attachments[0].decoded.length).to eq 1026 end it "should find an attachment that has an encoded name value" do mail = read_fixture('emails/attachment_emails/attachment_with_encoded_name.eml') expect(mail.attachments.length).to eq 1 result = mail.attachments[0].filename replace = '�' expected = "01 Quien Te Dij#{replace}at. Pitbull.mp3" expect(result).to eq expected end it "should find an attachment that has an base64 encoded name value" do mail = read_fixture('emails/attachment_emails/attachment_with_base64_encoded_name.eml') expect(mail.attachments.length).to eq 1 result = mail.attachments[0].filename expect(result).to eq "This is a test.pdf" end it "should find an attachment that has a name not surrounded by quotes" do mail = read_fixture('emails/attachment_emails/attachment_with_unquoted_name.eml') expect(mail.attachments.length).to eq 1 expect(mail.attachments.first.filename).to eq "This is a test.txt" end it "should decode an attachment without ascii compatible filename" do mail = read_fixture('emails/attachment_emails/attachment_nonascii_filename.eml') expect(mail.attachments.length).to eq 1 expect(mail.attachments.first.filename).to eq "ciële.txt" end it "should find attachments inside parts with content-type message/rfc822" do mail = read_fixture('emails/attachment_emails/attachment_message_rfc822.eml') expect(mail.attachments.length).to eq 1 expect(mail.attachments[0].decoded.length).to eq 1026 end it "attach filename decoding (issue 83)" do mail = Mail.new(Mail::Utilities.to_crlf(<<-limitMAIL)) Subject: aaa From: aaa@aaa.com To: bbb@aaa.com Content-Type: multipart/mixed; boundary=0016e64c0af257c3a7048b69e1ac --0016e64c0af257c3a7048b69e1ac Content-Type: multipart/alternative; boundary=0016e64c0af257c3a1048b69e1aa --0016e64c0af257c3a1048b69e1aa Content-Type: text/plain; charset=ISO-8859-1 aaa --0016e64c0af257c3a1048b69e1aa Content-Type: text/html; charset=ISO-8859-1 aaa
    --0016e64c0af257c3a1048b69e1aa-- --0016e64c0af257c3a7048b69e1ac Content-Type: text/plain; charset=US-ASCII; name="=?utf-8?b?Rm90bzAwMDkuanBn?=" Content-Disposition: attachment; filename="=?utf-8?b?Rm90bzAwMDkuanBn?=" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbneqxxy0 YWFhCg== --0016e64c0af257c3a7048b69e1ac-- limitMAIL #~ puts Mail::Encodings.decode_encode(mail.attachments[0].filename, :decode) expect(mail.attachments[0].filename).to eq "Foto0009.jpg" end end end describe "attachment order" do it "should be preserved instead when content type exists" do mail = Mail.new do to "aaaa@aaaa.aaa" from "aaaa2@aaaa.aaa" subject "a subject" date Time.now text_part do content_type 'text/plain; charset=UTF-8' body "a \nsimplebody\n" end end mail.attachments['test.zip'] = read_raw_fixture('attachments', 'test.zip') mail.attachments['test.pdf'] = read_raw_fixture('attachments', 'test.pdf') mail.attachments['test.gif'] = read_raw_fixture('attachments', 'test.gif') mail.attachments['test.jpg'] = read_raw_fixture('attachments', 'test.jpg') expect(mail.attachments[0].filename).to eq 'test.zip' expect(mail.attachments[1].filename).to eq 'test.pdf' expect(mail.attachments[2].filename).to eq 'test.gif' expect(mail.attachments[3].filename).to eq 'test.jpg' mail2 = Mail.new(mail.encoded) expect(mail2.attachments[0].filename).to eq 'test.zip' expect(mail2.attachments[1].filename).to eq 'test.pdf' expect(mail2.attachments[2].filename).to eq 'test.gif' expect(mail2.attachments[3].filename).to eq 'test.jpg' end end mail-2.8.1/spec/mail/body_spec.rb000066400000000000000000000507021436372131700166270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Body do # 3.5 Overall message syntax # # A message consists of header fields, optionally followed by a message # body. Lines in a message MUST be a maximum of 998 characters # excluding the CRLF, but it is RECOMMENDED that lines be limited to 78 # characters excluding the CRLF. (See section 2.1.1 for explanation.) # In a message body, though all of the characters listed in the text # rule MAY be used, the use of US-ASCII control characters (values 1 # through 8, 11, 12, and 14 through 31) is discouraged since their # interpretation by receivers for display is not guaranteed. # # message = (fields / obs-fields) # [CRLF body] # # body = *(*998text CRLF) *998text # # The header fields carry most of the semantic information and are # defined in section 3.6. The body is simply a series of lines of text # which are uninterpreted for the purposes of this standard. # describe "initialization" do it "should be instantiated" do expect { Mail::Body.new }.not_to raise_error end it "should initialize on a nil value" do expect { Mail::Body.new(nil) }.not_to raise_error end it "should accept text as raw source data" do body = Mail::Body.new('this is some text') expect(body.to_s).to eq 'this is some text' end it "should accept nil as a value and return an empty body" do body = Mail::Body.new expect(body.to_s).to eq '' end it "should accept an array as the body and join it" do expect { Mail::Body.new(["line one\n", "line two\n"]) }.not_to raise_error end it "should accept an array as the body and join it" do body = Mail::Body.new(["line one\n", "line two\n"]) expect(body.encoded).to eq "line one\r\nline two\r\n" end end describe "encoding" do it "should accept text as raw source data" do body = Mail::Body.new('this is some text') expect(body.encoded).to eq 'this is some text' end it "should set its own encoding to us_ascii if it is ascii only body" do body = Mail::Body.new('This is some text') expect(body.charset).to eq 'US-ASCII' end it "should allow you to set its encoding" do body = Mail::Body.new('') body.charset = 'UTF-8' expect(body.charset).to eq 'UTF-8' end it "should allow you to specify an encoding" do body = Mail::Body.new('') body.encoding = 'base64' expect(body.encoding).to eq 'base64' end it "should convert all new lines to crlf" do body = Mail::Body.new("This has \n various \r new \r\n lines") expect(body.encoded).to eq "This has \r\n various \r\n new \r\n lines" end end describe "decoding" do it "should convert all new lines to crlf" do body = Mail::Body.new("This has \n various \r new \r\n lines") expect(body.decoded).to eq "This has \n various \n new \n lines" end it "should not change a body on decode if not given an encoding type to decode" do body = Mail::Body.new("The=3Dbody") expect(body.decoded).to eq "The=3Dbody" end it "should change return the raw text if it does not recognise the encoding" do body = Mail::Body.new("The=3Dbody") body.encoding = '7bit' expect(body.decoded).to eq "The=3Dbody" end it "should change a body on decode if given an encoding type to decode" do body = Mail::Body.new("The=3Dbody") body.encoding = 'quoted-printable' expect(body.decoded).to eq "The=body" end it "should change a body on decode if given an encoding type to decode" do body = Mail::Body.new("VGhlIGJvZHk=\n") body.encoding = 'base64' expect(body.decoded).to eq "The body" end end describe "splitting up a multipart document" do def assert_split_into(body, pre, epi, parts) body = Mail::Body.new(body) body.split!('----=_Part_2192_32400445') expect(body.parts.size).to eq parts expect(body.preamble).to eq pre expect(body.epilogue).to eq epi end it "should store the boundary passed in" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.boundary).to eq '----=_Part_2192_32400445' end it "should split at the boundry string given returning two message bodies" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) expect(body.split!('----=_Part_2192_32400445').parts.length).to eq 2 end it "should split with missing closing boundary" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain\r\n\r\nWhere is the closing boundary...\r\n" assert_split_into(multipart_body, "this is some text", "", 1) end it "should not split with empty space after missing closing boundary" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain\r\n\r\nWhere is the closing boundary...\r\n------=_Part_2192_32400445\r\n\r\n\r\n\r\n" assert_split_into(multipart_body, "this is some text", "", 1) end it "should split with multiple parts and missing closing boundary" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain\r\n\r\nExtra part 1\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain\r\n\r\nWhere is the closing boundary...\r\n" assert_split_into(multipart_body, "this is some text", "", 2) end it "should ignore blank parts" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\n\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain\r\n\r\nWhere is the closing boundary...\r\n" assert_split_into(multipart_body, "this is some text", "", 1) end it "should keep the preamble text as its own preamble" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.preamble).to eq "this is some text" end it "should return the parts as their own messages" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.parts[0].class).to eq Mail::Part expect(body.parts[1].class).to eq Mail::Part end it "should return the first part as its own message" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.parts[0].content_type).to eq "text/plain; charset=ISO-8859-1" end it "should return the first part as its own message" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.parts[1].content_type).to eq "text/html" end it "should separate out its parts" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body).to be_multipart end it "should keep track of its parts" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') expect(body.parts.length).to eq 2 end it "should round trip its parts" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') body.preamble = "Really! this is some text" body.epilogue = "And this is the end" new_body = Mail::Body.new(body.encoded) new_body.split!('----=_Part_2192_32400445') expect(new_body.parts.length).to eq 2 expect(new_body.parts[0].decoded).to eq "This is a plain text\n" expect(new_body.parts[1].decoded).to eq "

    This is HTML

    " expect(new_body.preamble).to eq "Really! this is some text" expect(new_body.epilogue).to eq "And this is the end" end it "should allow you to change the boundary" do multipart_body = "this is some text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n\r\nThis is a plain text\r\n\r\n------=_Part_2192_32400445\r\nContent-Type: text/html\r\n\r\n

    This is HTML

    \r\n------=_Part_2192_32400445--\r\n" body = Mail::Body.new(multipart_body) body.split!('----=_Part_2192_32400445') body.boundary = '------=_MIMEPART' new_body = Mail::Body.new(body.encoded) new_body.split!('------=_MIMEPART') expect(new_body.parts.length).to eq 2 expect(new_body.preamble).to eq "this is some text" end it "should split if boundary is not set" do multipart_body = "\n\n--\nDate: Thu, 01 Aug 2013 15:14:20 +0100\nMime-Version: 1.0\nContent-Type: text/plain\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment;\n filename=\"\"\nContent-ID: <51fa6d3cac796_d84e3fe5a58349e025683@local.mail>\n\n\n\n----" body = Mail::Body.new(multipart_body) expect { body.split!(nil) }.not_to raise_error end end describe "detecting non ascii" do it "should say an empty string is all ascii" do body = Mail::Body.new expect(body).to be_ascii_only end it "should say if a body is ascii" do body = Mail::Body.new('This is ASCII') expect(body).to be_ascii_only end it "should say if a body is not ascii" do body = Mail::Body.new("This is NOT plain text ASCII − かきくけこ") expect(body).not_to be_ascii_only end end describe "adding parts" do it "should allow you to add a part" do body = Mail::Body.new('') body << Mail::Part.new('') expect(body.parts.length).to eq 1 expect(body).to be_multipart end it "should allow you to sort the parts" do body = Mail::Body.new('') body << Mail::Part.new("content-type: text/html\r\nsubject: HTML") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text") body << Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched") expect(body.parts.length).to eq 3 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].content_type).to eq "text/plain" expect(body.parts[1].content_type).to eq "text/enriched" expect(body.parts[2].content_type).to eq "text/html" end it "should allow you to sort the parts with an arbitrary sort order" do body = Mail::Body.new('') body.set_sort_order([ "text/plain", "text/html", "text/enriched" ]) body << Mail::Part.new("content-type: text/html\r\nsubject: HTML") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text") body << Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched") expect(body.parts.length).to eq 3 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].content_type).to eq "text/plain" expect(body.parts[1].content_type).to eq "text/html" expect(body.parts[2].content_type).to eq "text/enriched" end it "should allow you to sort the parts with an arbitrary sort order" do body = Mail::Body.new('') body.set_sort_order(["application/x-yaml", "text/plain"]) body << Mail::Part.new("content-type: text/plain\r\nsubject: HTML") body << Mail::Part.new("content-type: text/html\r\nsubject: Plain Text") body << Mail::Part.new("content-type: application/x-yaml\r\nsubject: Enriched") expect(body.parts.length).to eq 3 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].content_type).to eq "application/x-yaml" expect(body.parts[1].content_type).to eq "text/plain" expect(body.parts[2].content_type).to eq "text/html" end it "should sort the parts on encode" do body = Mail::Body.new('') body << Mail::Part.new("content-type: text/html\r\nsubject: HTML") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text") body << Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched") expect(body.parts.length).to eq 3 expect(body).to be_multipart body.encoded expect(body.parts[0].content_type).to eq "text/plain" expect(body.parts[1].content_type).to eq "text/enriched" expect(body.parts[2].content_type).to eq "text/html" end it "should put the part types it doesn't know about at the end" do body = Mail::Body.new('') body << Mail::Part.new("content-type: text/html\r\nsubject: HTML") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text") body << Mail::Part.new("content-type: image/jpeg\r\n") expect(body.parts.length).to eq 3 expect(body).to be_multipart body.encoded expect(body.parts[0].content_type).to eq "text/plain" expect(body.parts[1].content_type).to eq "text/html" expect(body.parts[2].content_type).to eq "image/jpeg" end it "should allow you to sort the parts recursively" do part = Mail::Part.new('Content-Type: multipart/alternate') part.add_part(Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text")) part.add_part(Mail::Part.new("content-type: text/html\r\nsubject: HTML")) part.add_part(Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched")) body = Mail::Body.new('') body << part body << Mail::Part.new("content-type: image/jpeg\r\nsubject: JPGEG\r\n\r\nsdkjskjdksjdkjsd") expect(body.parts.length).to eq 2 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].content_type).to match %r{\Amultipart/alternate(;|\Z)} expect(body.parts[1].content_type).to eq "image/jpeg" expect(body.parts[0].parts[0].content_type).to eq "text/plain" expect(body.parts[0].parts[1].content_type).to eq "text/enriched" expect(body.parts[0].parts[2].content_type).to eq "text/html" end it "should allow you to sort the parts recursively" do part = Mail::Part.new('Content-Type: multipart/alternate') part.add_part(Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched")) part.add_part(Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text")) part.add_part(Mail::Part.new("content-type: text/html\r\nsubject: HTML")) body = Mail::Body.new('') body << part body << Mail::Part.new("content-type: image/jpeg\r\nsubject: JPGEG\r\n\r\nsdkjskjdksjdkjsd") expect(body.parts.length).to eq 2 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].content_type).to match %r{\Amultipart/alternate(;|\Z)} expect(body.parts[1].content_type).to eq "image/jpeg" expect(body.parts[0].parts[0].content_type).to eq "text/plain" expect(body.parts[0].parts[1].content_type).to eq "text/enriched" expect(body.parts[0].parts[2].content_type).to eq "text/html" end it "should maintain the relative order of the parts with the same content-type as they are added" do body = Mail::Body.new(''); body << Mail::Part.new("content-type: text/html\r\nsubject: HTML_1") body << Mail::Part.new("content-type: image/jpeg\r\nsubject: JPGEG_1\r\n\r\nsdkjskjdksjdkjsd") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text_1") body << Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched_1") body << Mail::Part.new("content-type: text/html\r\nsubject: HTML_2") body << Mail::Part.new("content-type: text/plain\r\nsubject: Plain Text_2") body << Mail::Part.new("content-type: image/jpeg\r\nsubject: JPGEG_2\r\n\r\nsdkjskjdksjdkjsd") body << Mail::Part.new("content-type: text/enriched\r\nsubject: Enriched_2") expect(body.parts.length).to eq 8 expect(body).to be_multipart body.sort_parts! expect(body.parts[0].subject).to eq "Plain Text_1" expect(body.parts[1].subject).to eq "Plain Text_2" expect(body.parts[2].subject).to eq "Enriched_1" expect(body.parts[3].subject).to eq "Enriched_2" expect(body.parts[4].subject).to eq "HTML_1" expect(body.parts[5].subject).to eq "HTML_2" expect(body.parts[6].subject).to eq "JPGEG_1" expect(body.parts[7].subject).to eq "JPGEG_2" end end describe "matching" do it "should still equal itself" do body = Mail::Body.new('The body') expect(body).to eq body end it "should match on the body part decoded if given a string to ==" do body = Mail::Body.new('The body') expect(body == 'The body').to be_truthy end it "should match on the body part decoded if given a string to ==" do body = Mail::Body.new("VGhlIGJvZHk=\n") body.encoding = 'base64' expect(body == "The body").to be_truthy end it "should match on the body part decoded if given a string to =~" do body = Mail::Body.new('The body') expect(body =~ /The/).to eq 0 end it "should match on the body part decoded if given a string to ==" do body = Mail::Body.new("VGhlIGJvZHk=\n") body.encoding = 'base64' expect(body =~ /The/).to eq 0 end it "should match on the body part decoded if given a string to match" do body = Mail::Body.new('The body') expect((body.match(/The/))[0]).to eq 'The' end it "should match on the body part decoded if given a string to match" do body = Mail::Body.new("VGhlIGJvZHk=\n") body.encoding = 'base64' expect((body.match(/The/))[0]).to eq 'The' end it "should match on the body part decoded if given a string to include?" do body = Mail::Body.new('The Body') expect(body).to include('The') end it "should match on the body part decoded if given a string to include?" do body = Mail::Body.new("VGhlIGJvZHk=\n") body.encoding = 'base64' expect(body).to include('The') end end describe "non US-ASCII charset" do it "should encoded" do body = Mail::Body.new("あいうえお\r\n") body.charset = 'iso-2022-jp' expect(body.encoded).to eq "\e$B$\"$$$&$($*\e(B\r\n" end end describe "invalid encoding" do it "should round trip" do body = Mail::Body.new('The Body') body.encoding = 'invalid' expect(body.encoded).to eq 'The Body' end end describe "Partslist empty" do it "should not break on empty PartsList on body" do body = Mail::Body.new('The Body') body.sort_parts! expect(body.parts.count).to eq 0 end end end mail-2.8.1/spec/mail/check_delivery_params_spec.rb000066400000000000000000000067501436372131700222210ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::CheckDeliveryParams do let(:from_addr) { 'from@example.com' } let(:to_addr) { 'to@example.org' } let(:mail) { Mail.new(from: from_addr, to: to_addr, subject: 'Hello there Mikel', body: 'This is a body of text') } describe ".check" do it "returns the from, to array and encoded message in an array" do expect(Mail::CheckDeliveryParams.check(mail)).to eq([from_addr, [to_addr], mail.encoded]) end it 'raises error if From is blank' do mail.from = nil expect { Mail::CheckDeliveryParams.check(mail) }.to raise_error(ArgumentError, "SMTP From address may not be blank: nil") end it 'raises error if To is blank' do mail.to = nil expect { Mail::CheckDeliveryParams.check(mail) }.to raise_error(ArgumentError, "SMTP To address may not be blank: []") end end describe '.check_from' do it "returns the from address" do expect(Mail::CheckDeliveryParams.check_from(mail.smtp_envelope_from)).to eq(from_addr) end it 'raises error if From is too long' do long_addr = "#{'bob'*682}@example.com" expect { Mail::CheckDeliveryParams.check_from(long_addr) }.to raise_error(ArgumentError, "SMTP From address may not exceed 2000 bytes: \"#{long_addr}\"") end end describe '.check_to' do it "returns the to address array" do expect(Mail::CheckDeliveryParams.check_to(mail.smtp_envelope_to)).to eq([to_addr]) end it 'raises error if To is too long' do long_addr = "#{'bob'*682}@example.com" expect { Mail::CheckDeliveryParams.check_to(long_addr) }.to raise_error(ArgumentError, "SMTP To address may not exceed 2000 bytes: \"#{long_addr}\"") end end describe '.check_addr' do it "returns the address if it is not too long" do expect(Mail::CheckDeliveryParams.check_addr("From", mail.smtp_envelope_from)).to eq(mail.smtp_envelope_from) end it 'raises error if address is too long' do long_addr = "#{'bob'*682}@example.com" expect { Mail::CheckDeliveryParams.check_addr("To", long_addr) }.to raise_error(ArgumentError, "SMTP To address may not exceed 2000 bytes: \"#{long_addr}\"") end end describe '.validate_smtp_addr' do it "returns the address is not too long" do expect(Mail::CheckDeliveryParams.validate_smtp_addr(mail.smtp_envelope_from)).to eq(mail.smtp_envelope_from) end it 'returns error message if address contains LF' do long_addr = "bob\n@example.com" Mail::CheckDeliveryParams.validate_smtp_addr(long_addr) do |error_message| expect(error_message).to eq('may not contain CR or LF line breaks') end end it 'returns error message if address contains CR' do long_addr = "bob\r@example.com" Mail::CheckDeliveryParams.validate_smtp_addr(long_addr) do |error_message| expect(error_message).to eq('may not contain CR or LF line breaks') end end it 'returns error message if address is too long' do long_addr = "#{'bob'*682}@example.com" Mail::CheckDeliveryParams.validate_smtp_addr(long_addr) do |error_message| expect(error_message).to eq('may not exceed 2kB') end end end describe '.check_message' do it "ensures the message is not blank" do expect(Mail::CheckDeliveryParams.check_message(mail.encoded)).to eq(mail.encoded) end end end mail-2.8.1/spec/mail/configuration_spec.rb000066400000000000000000000044311436372131700205370ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' class MyTestDeliveryMethod attr_accessor :settings def initialize(values) self.settings = {}.merge!(values) end end describe Mail::Configuration do describe "network configurations" do it "defaults delivery_method to smtp" do # Need to clear out any prior configuration, as setting nil on the config # will not clear it. Mail::Configuration.instance.send(:initialize) Mail.defaults { delivery_method nil, { :address => 'some.host' } } expect(Mail.delivery_method.settings[:address]).to eq 'some.host' end it "should be available from the Mail.defaults method" do Mail.defaults { delivery_method :smtp, { :address => 'some.host' } } expect(Mail.delivery_method.settings[:address]).to eq 'some.host' end it "should configure sendmail" do Mail.defaults { delivery_method :sendmail, :location => "/usr/bin/sendmail" } expect(Mail.delivery_method.class).to eq Mail::Sendmail expect(Mail.delivery_method.settings[:location]).to eq "/usr/bin/sendmail" end it "should configure sendmail using a string" do Mail.defaults { delivery_method 'sendmail', :location => "/usr/bin/sendmail" } expect(Mail.delivery_method.class).to eq Mail::Sendmail expect(Mail.delivery_method.settings[:location]).to eq "/usr/bin/sendmail" end it "should configure exim" do Mail.defaults { delivery_method :exim, :location => "/usr/bin/exim" } expect(Mail.delivery_method.class).to eq Mail::Exim expect(Mail.delivery_method.settings[:location]).to eq "/usr/bin/exim" end it "should configure an open SMTP connection" do smtp = Net::SMTP.start('127.0.0.1', 25) Mail.defaults { delivery_method :smtp_connection, {:connection => smtp} } expect(Mail.delivery_method.class).to eq Mail::SMTPConnection expect(Mail.delivery_method.smtp).to eq smtp end it "should accept a plug-in delivery method" do Mail.defaults { delivery_method MyTestDeliveryMethod, { :option1 => "one", :option2 => "two" }} expect(Mail.delivery_method.class).to eq MyTestDeliveryMethod expect(Mail.delivery_method.settings[:option1]).to eq "one" expect(Mail.delivery_method.settings[:option2]).to eq "two" end end end mail-2.8.1/spec/mail/core_extensions_spec.rb000066400000000000000000000001371436372131700210760ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Object do end mail-2.8.1/spec/mail/elements/000077500000000000000000000000001436372131700161435ustar00rootroot00000000000000mail-2.8.1/spec/mail/elements/address_list_spec.rb000066400000000000000000000112631436372131700221650ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::AddressList do describe "parsing" do it "should parse an address list" do parse_text = 'test@lindsaar.net' expect { Mail::AddressList.new(parse_text) }.not_to raise_error end it "should raise an error if the input is useless" do parse_text = '@@@@@@' expect { Mail::AddressList.new(parse_text) }.to raise_error(Mail::Field::ParseError) end it "should not raise an error if the input is just blank" do parse_text = nil expect { Mail::AddressList.new(parse_text) }.not_to raise_error end it "should raise an error if the input is useless" do parse_text = "This ( is an invalid address!" expect { Mail::AddressList.new(parse_text) }.to raise_error(Mail::Field::ParseError) end it "should give the address passed in" do parse_text = 'test@lindsaar.net' result = 'test@lindsaar.net' a = Mail::AddressList.new(parse_text) expect(a.addresses.first.to_s).to eq result end it "should give the addresses passed in" do parse_text = 'test@lindsaar.net, test2@lindsaar.net' result = ['test@lindsaar.net', 'test2@lindsaar.net'] a = Mail::AddressList.new(parse_text) expect(a.addresses.map {|addr| addr.to_s }).to eq result end it "should preserve the display name" do parse_text = '"Mikel Lindsaar" ' result = 'Mikel Lindsaar ' a = Mail::AddressList.new(parse_text) expect(a.addresses.first.format).to eq result expect(a.addresses.first.display_name).to eq 'Mikel Lindsaar' end it "should handle and ignore nil addresses" do parse_text = ' , user-example@aol.com, e-s-a-s-2200@app.ar.com' result = ['user-example@aol.com', 'e-s-a-s-2200@app.ar.com'] a = Mail::AddressList.new(parse_text) expect(a.addresses.map {|addr| addr.to_s }).to eq result end it "should handle truly horrific combinations of commas, spaces, and addresses" do parse_text = ' ,, foo@example.com, , ,,, bar@example.com ,,' result = ['foo@example.com', 'bar@example.com'] a = Mail::AddressList.new(parse_text) expect(a.addresses.map {|addr| addr.to_s }).to eq result end it "should handle folding whitespace" do parse_text = "foo@example.com,\r\n\tbar@example.com" result = ['foo@example.com', 'bar@example.com'] a = Mail::AddressList.new(parse_text) expect(a.addresses.map {|addr| addr.to_s }).to eq result end it "should handle malformed folding whitespace" do pending parse_text = "leads@sg.dc.com,\n\t sag@leads.gs.ry.com,\n\t sn@example-hotmail.com,\n\t e-s-a-g-8718@app.ar.com,\n\t jp@t-exmaple.com,\n\t\n\t cc@c-l-example.com" result = %w(leads@sg.dc.com sag@leads.gs.ry.com sn@example-hotmail.com e-s-a-g-8718@app.ar.com jp@t-exmaple.com cc@c-l-example.com) a = Mail::AddressList.new(parse_text) expect(a.addresses.map {|addr| addr.to_s }).to eq result end it "should extract comments in addreses which are part of a group" do parse_text = "group: jimmy ;"; result = ["comment"] a = Mail::AddressList.new(parse_text) expect(a.addresses.first.comments).to eq result end end describe "functionality" do it "should give all the groups when asked" do list = Mail::AddressList.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(list.addresses_grouped_by_group.length).to eq 1 end it "should ask the group for all its addresses" do list = Mail::AddressList.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(list.addresses_grouped_by_group.values.first.length).to eq 2 end it "should give all the addresses when asked" do list = Mail::AddressList.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(list.addresses.length).to eq 3 end it "should handle a really nasty obsolete address list" do psycho_obsolete = "Mary Smith <@machine.tld:mary@example.net>, , jdoe@test . example" list = Mail::AddressList.new(psycho_obsolete) expect(list.addresses.length).to eq 2 end it "should create an address instance for each address returned" do list = Mail::AddressList.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') list.addresses.each do |address| expect(address.class).to eq Mail::Address end end it "should provide a list of group names" do list = Mail::AddressList.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(list.group_names).to eq ["my_group"] end end end mail-2.8.1/spec/mail/elements/address_spec.rb000066400000000000000000001172101436372131700211310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Address do describe "functionality" do it "should allow us to instantiate an empty address object and call inspect" do expect { Mail::Address.new.inspect }.not_to raise_error end it "should allow us to instantiate an empty address object and call to_s" do expect(Mail::Address.new.to_s).to eq '' end it "should allow us to instantiate an empty address object and call format" do expect(Mail::Address.new.format).to eq '' end it "should allow us to instantiate an empty address object and call address" do [nil, '', ' '].each do |input| expect(Mail::Address.new(input).address).to be_nil end end it "should allow us to instantiate an empty address object and call local" do [nil, '', ' '].each do |input| expect(Mail::Address.new(input).local).to be_nil end end it "should allow us to instantiate an empty address object and call domain" do [nil, '', ' '].each do |input| expect(Mail::Address.new(input).domain).to be_nil end end it "should allow us to instantiate an empty address object and call name" do [nil, '', ' '].each do |input| expect(Mail::Address.new(input).name).to be_nil end end ['"-Earnings...Notification-" ', '<56253817>'].each do |spammy_address| it "should ignore funky local-only spammy addresses in angle brackets #{spammy_address}" do expect(Mail::Address.new(spammy_address).address).to be_nil end end it "should give its address back on :to_s if there is no display name" do parse_text = 'test@lindsaar.net' result = 'test@lindsaar.net' expect(Mail::Address.new(parse_text).to_s).to eq result end it "should give its format back on :to_s if there is a display name" do parse_text = 'Mikel Lindsaar ' result = 'Mikel Lindsaar ' expect(Mail::Address.new(parse_text).to_s).to eq result end it "should give back the display name" do parse_text = 'Mikel Lindsaar ' result = 'Mikel Lindsaar' a = Mail::Address.new(parse_text) expect(a.display_name).to eq result end it "should preserve the display name passed in" do parse_text = '"Mikel Lindsaar" ' result = 'Mikel Lindsaar' a = Mail::Address.new(parse_text) expect(a.display_name).to eq result end it "should preserve the display name passed in with token unsafe chars" do parse_text = '"Mikel@@@Lindsaar" ' result = 'Mikel@@@Lindsaar' a = Mail::Address.new(parse_text) expect(a.display_name).to eq result end it "should decode the display name without calling #decoded first" do encoded = '=?ISO-8859-1?Q?Jan_Kr=FCtisch?= ' expect(Mail::Address.new(encoded).display_name).to eq 'Jan Krütisch' end it "doesn't get stuck on decode or encode output mode" do a = Mail::Address.new('=?ISO-8859-1?Q?Jan_Kr=FCtisch?= ') expect(a.display_name).to eq 'Jan Krütisch' # Ignore result, ensure it doesn't flip format mode a.encoded expect(a.display_name).to eq 'Jan Krütisch' end it "should allow nil display name" do a = Mail::Address.new expect(a.display_name).to be_nil a.display_name = nil expect(a.display_name).to be_nil end it "should give back the local part" do parse_text = 'Mikel Lindsaar ' result = 'test' a = Mail::Address.new(parse_text) expect(a.local).to eq result end it "should give back the domain" do parse_text = 'Mikel Lindsaar ' result = 'lindsaar.net' a = Mail::Address.new(parse_text) expect(a.domain).to eq result end it "should give back the formated address" do parse_text = 'Mikel Lindsaar ' result = 'Mikel Lindsaar ' a = Mail::Address.new(parse_text) expect(a.format).to eq result end it "should handle an address without a domain" do parse_text = 'test' result = 'test' a = Mail::Address.new(parse_text) expect(a.address).to eq result end it "should handle comments" do parse_text = "Mikel Lindsaar (author) " result = ['author'] a = Mail::Address.new(parse_text) expect(a.comments).to eq result end it "should handle multiple comments" do parse_text = "Mikel (first name) Lindsaar (author) " result = ['first name', 'author'] a = Mail::Address.new(parse_text) expect(a.comments).to eq result end it "should handle nested comments" do parse_text = "bob@example.com (hello (nested) yeah)" result = ["hello \(nested\) yeah"] a = Mail::Address.new(parse_text) expect(a.comments).to eq result end it "should give back the raw value" do parse_text = "Mikel (first name) Lindsaar (author) " result = "Mikel (first name) Lindsaar (author) " a = Mail::Address.new(parse_text) expect(a.raw).to eq result end it "should format junk addresses as raw text" do junk = '<"somename@gmail.com">' expect(Mail::Address.new(junk).format).to eq junk end end describe "assigning values directly" do it "should allow you to assign an address" do a = Mail::Address.new a.address = 'mikel@test.lindsaar.net' expect(a.address).to eq 'mikel@test.lindsaar.net' expect(a.format).to eq 'mikel@test.lindsaar.net' end it "should allow you to assign a display name" do a = Mail::Address.new a.display_name = 'Mikel Lindsaar' expect(a.display_name).to eq 'Mikel Lindsaar' end it "should return an empty format a display name and no address defined" do a = Mail::Address.new a.display_name = 'Mikel Lindsaar' expect(a.format).to eq '' end it "should allow you to assign an address and a display name" do a = Mail::Address.new a.address = 'mikel@test.lindsaar.net' a.display_name = 'Mikel Lindsaar' expect(a.format).to eq 'Mikel Lindsaar ' end end describe "parsing" do describe "basic email addresses" do it "should handle all OK local parts" do [['aamine', 'aamine'], ['"Minero Aoki"', '"Minero Aoki"'], ['"!@#$%^&*()"', '"!@#$%^&*()"'], ['a.b.c', 'a.b.c'] ].each do |(words, ok)| a = Mail::Address.new(words) expect(a.local).to eq ok end end it "should handle all OK domains" do [['loveruby.net', 'loveruby.net'], ['"love ruby".net', '"love ruby".net'], ['a."love ruby".net', 'a."love ruby".net'], ['"!@#$%^&*()"', '"!@#$%^&*()"'], ['[192.168.1.1]', '[192.168.1.1]'] ].each do |(words, ok)| a = Mail::Address.new(%Q|me@#{words}|) expect(a.domain).to eq ok end end end describe 'RFC 6532 UTF-8 chars' do it 'local' do expect(Mail::Address.new('💌@example.com').local).to eq '💌' end it 'domain' do expect(Mail::Address.new('test@exämple.com').domain).to eq 'exämple.com' end it 'display name' do expect(Mail::Address.new('"💌" ').display_name).to eq '💌' end end describe "email addresses from the wild" do it "should handle |aamine@loveruby.net|" do address = Mail::Address.new('aamine@loveruby.net') expect(address).to break_down_to({ :display_name => nil, :address => 'aamine@loveruby.net', :local => 'aamine', :domain => 'loveruby.net', :format => 'aamine@loveruby.net', :comments => nil, :raw => 'aamine@loveruby.net'}) end it "should handle |Minero Aoki |" do address = Mail::Address.new('Minero Aoki ') expect(address).to break_down_to({ :display_name => 'Minero Aoki', :address => 'aamine@loveruby.net', :local => 'aamine', :domain => 'loveruby.net', :format => 'Minero Aoki ', :comments => nil, :raw => 'Minero Aoki '}) end it "should handle |Minero Aoki|" do address = Mail::Address.new('Minero Aoki') expect(address).to break_down_to({ :display_name => 'Minero Aoki', :address => 'aamine@loveruby.net', :local => 'aamine', :domain => 'loveruby.net', :format => 'Minero Aoki ', :comments => nil, :raw => 'Minero Aoki'}) end it 'should handle |"Minero Aoki" |' do address = Mail::Address.new('"Minero Aoki" ') expect(address).to break_down_to({ :display_name => 'Minero Aoki', :address => 'aamine@loveruby.net', :local => 'aamine', :domain => 'loveruby.net', :format => 'Minero Aoki ', :comments => nil, :raw => '"Minero Aoki" '}) end it "should handle |Minero Aoki|" do address = Mail::Address.new('Minero Aoki') expect(address).to break_down_to({ :display_name => 'Minero Aoki', :address => 'aamine@0246.loveruby.net', :local => 'aamine', :domain => '0246.loveruby.net', :format => 'Minero Aoki ', :comments => nil, :raw => 'Minero Aoki'}) end it "should handle lots of dots" do 1.upto(10) do |times| dots = "." * times address = Mail::Address.new("hoge#{dots}test@docomo.ne.jp") expect(address).to break_down_to({ :display_name => nil, :address => "hoge#{dots}test@docomo.ne.jp", :local => "hoge#{dots}test", :domain => 'docomo.ne.jp', :format => "hoge#{dots}test@docomo.ne.jp", :comments => nil, :raw => "hoge#{dots}test@docomo.ne.jp"}) end end it "should handle trailing dots" do 1.upto(10) do |times| dots = "." * times address = Mail::Address.new("hogetest#{dots}@docomo.ne.jp") expect(address).to break_down_to({ :display_name => nil, :address => "hogetest#{dots}@docomo.ne.jp", :local => "hogetest#{dots}", :domain => 'docomo.ne.jp', :format => "hogetest#{dots}@docomo.ne.jp", :comments => nil, :raw => "hogetest#{dots}@docomo.ne.jp"}) end end it 'should handle |"Joe & J. Harvey" |' do address = Mail::Address.new('"Joe & J. Harvey" ') expect(address).to break_down_to({ :name => 'Joe & J. Harvey', :display_name => 'Joe & J. Harvey', :address => 'ddd@Org', :domain => 'Org', :local => 'ddd', :format => '"Joe & J. Harvey" ', :comments => nil, :raw => '"Joe & J. Harvey" '}) end it 'should handle |"spickett@tiac.net" |' do address = Mail::Address.new('"spickett@tiac.net" ') expect(address).to break_down_to({ :name => 'spickett@tiac.net', :display_name => 'spickett@tiac.net', :address => 'Sean.Pickett@zork.tiac.net', :domain => 'zork.tiac.net', :local => 'Sean.Pickett', :format => '"spickett@tiac.net" ', :comments => nil, :raw => '"spickett@tiac.net" '}) end it "should handle |rls@intgp8.ih.att.com (-Schieve,R.L.)|" do address = Mail::Address.new('rls@intgp8.ih.att.com (-Schieve,R.L.)') expect(address).to break_down_to({ :name => '-Schieve,R.L.', :display_name => nil, :address => 'rls@intgp8.ih.att.com', :comments => ['-Schieve,R.L.'], :domain => 'intgp8.ih.att.com', :local => 'rls', :format => 'rls@intgp8.ih.att.com (-Schieve,R.L.)', :raw => 'rls@intgp8.ih.att.com (-Schieve,R.L.)'}) end it "should handle |jrh%cup.portal.com@portal.unix.portal.com|" do address = Mail::Address.new('jrh%cup.portal.com@portal.unix.portal.com') expect(address).to break_down_to({ :name => nil, :display_name => nil, :address => 'jrh%cup.portal.com@portal.unix.portal.com', :comments => nil, :domain => 'portal.unix.portal.com', :local => 'jrh%cup.portal.com', :format => 'jrh%cup.portal.com@portal.unix.portal.com', :raw => 'jrh%cup.portal.com@portal.unix.portal.com'}) end it "should handle |astrachan@austlcm.sps.mot.com ('paul astrachan/xvt3')|" do address = Mail::Address.new("astrachan@austlcm.sps.mot.com ('paul astrachan/xvt3')") expect(address).to break_down_to({ :name => "'paul astrachan/xvt3'", :display_name => nil, :address => 'astrachan@austlcm.sps.mot.com', :comments => ["'paul astrachan/xvt3'"], :domain => 'austlcm.sps.mot.com', :local => 'astrachan', :format => "astrachan@austlcm.sps.mot.com ('paul astrachan/xvt3')", :raw => "astrachan@austlcm.sps.mot.com ('paul astrachan/xvt3')"}) end it "should handle 'TWINE57%SDELVB.decnet@SNYBUF.CS.SNYBUF.EDU (JAMES R. TWINE - THE NERD)'" do address = Mail::Address.new('TWINE57%SDELVB.decnet@SNYBUF.CS.SNYBUF.EDU (JAMES R. TWINE - THE NERD)') expect(address).to break_down_to({ :name => 'JAMES R. TWINE - THE NERD', :display_name => nil, :address => 'TWINE57%SDELVB.decnet@SNYBUF.CS.SNYBUF.EDU', :comments => ['JAMES R. TWINE - THE NERD'], :domain => 'SNYBUF.CS.SNYBUF.EDU', :local => 'TWINE57%SDELVB.decnet', :format => 'TWINE57%SDELVB.decnet@SNYBUF.CS.SNYBUF.EDU (JAMES R. TWINE - THE NERD)', :raw => 'TWINE57%SDELVB.decnet@SNYBUF.CS.SNYBUF.EDU (JAMES R. TWINE - THE NERD)'}) end it "should be able to handle 'David Apfelbaum '" do address = Mail::Address.new('David Apfelbaum ') expect(address).to break_down_to({ :name => 'David Apfelbaum', :display_name => 'David Apfelbaum', :address => 'da0g+@andrew.cmu.edu', :comments => nil, :domain => 'andrew.cmu.edu', :local => 'da0g+', :format => 'David Apfelbaum ', :raw => 'David Apfelbaum '}) end it 'should handle |"JAMES R. TWINE - THE NERD" |' do address = Mail::Address.new('"JAMES R. TWINE - THE NERD" ') expect(address).to break_down_to({ :name => 'JAMES R. TWINE - THE NERD', :display_name => 'JAMES R. TWINE - THE NERD', :address => 'TWINE57%SDELVB%SNYDELVA.bitnet@CUNYVM.CUNY.EDU', :comments => nil, :domain => 'CUNYVM.CUNY.EDU', :local => 'TWINE57%SDELVB%SNYDELVA.bitnet', :format => '"JAMES R. TWINE - THE NERD" ', :raw => '"JAMES R. TWINE - THE NERD" '}) end it "should handle '/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/@mhs-relay.ac.uk'" do address = Mail::Address.new('/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/@mhs-relay.ac.uk') expect(address).to break_down_to({ :name => nil, :display_name => nil, :address => '/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/@mhs-relay.ac.uk', :comments => nil, :domain => 'mhs-relay.ac.uk', :local => '/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/', :format => '/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/@mhs-relay.ac.uk', :raw => '/G=Owen/S=Smith/O=SJ-Research/ADMD=INTERSPAN/C=GB/@mhs-relay.ac.uk'}) end it 'should handle |"Stephen Burke, Liverpool" |' do address = Mail::Address.new('"Stephen Burke, Liverpool" ') expect(address).to break_down_to({ :name => 'Stephen Burke, Liverpool', :display_name => 'Stephen Burke, Liverpool', :address => 'BURKE@vxdsya.desy.de', :comments => nil, :domain => 'vxdsya.desy.de', :local => 'BURKE', :format => '"Stephen Burke, Liverpool" ', :raw => '"Stephen Burke, Liverpool" '}) end it "should handle 'The Newcastle Info-Server '" do address = Mail::Address.new('The Newcastle Info-Server ') expect(address).to break_down_to({ :name => 'The Newcastle Info-Server', :display_name => 'The Newcastle Info-Server', :address => 'info-admin@newcastle.ac.uk', :comments => nil, :domain => 'newcastle.ac.uk', :local => 'info-admin', :format => 'The Newcastle Info-Server ', :raw => 'The Newcastle Info-Server '}) end it "should handle 'Suba.Peddada@eng.sun.com (Suba Peddada [CONTRACTOR])'" do address = Mail::Address.new('Suba.Peddada@eng.sun.com (Suba Peddada [CONTRACTOR])') expect(address).to break_down_to({ :name => 'Suba Peddada [CONTRACTOR]', :display_name => nil, :address => 'Suba.Peddada@eng.sun.com', :comments => ['Suba Peddada [CONTRACTOR]'], :domain => 'eng.sun.com', :local => 'Suba.Peddada', :format => 'Suba.Peddada@eng.sun.com (Suba Peddada [CONTRACTOR])', :raw => 'Suba.Peddada@eng.sun.com (Suba Peddada [CONTRACTOR])'}) end it "should handle 'Paul Manser (0032 memo) '" do address = Mail::Address.new('Paul Manser (0032 memo) ') expect(address).to break_down_to({ :name => 'Paul Manser', :display_name => 'Paul Manser', :address => 'a906187@tiuk.ti.com', :comments => ['0032 memo'], :domain => 'tiuk.ti.com', :local => 'a906187', :format => 'Paul Manser (0032 memo)', :raw => 'Paul Manser (0032 memo) '}) end it 'should handle |"gregg (g.) woodcock" |' do address = Mail::Address.new('"gregg (g.) woodcock" ') expect(address).to break_down_to({ :name => 'gregg (g.) woodcock', :display_name => 'gregg (g.) woodcock', :address => 'woodcock@bnr.ca', :comments => nil, :domain => 'bnr.ca', :local => 'woodcock', :format => '"gregg (g.) woodcock" ', :raw => '"gregg (g.) woodcock" '}) end it 'should handle |Graham.Barr@tiuk.ti.com|' do address = Mail::Address.new('Graham.Barr@tiuk.ti.com') expect(address).to break_down_to({ :name => nil, :display_name => nil, :address => 'Graham.Barr@tiuk.ti.com', :comments => nil, :domain => 'tiuk.ti.com', :local => 'Graham.Barr', :format => 'Graham.Barr@tiuk.ti.com', :raw => 'Graham.Barr@tiuk.ti.com'}) end it "should handle |a909937 (Graham Barr (0004 bodg))|" do address = Mail::Address.new('a909937 (Graham Barr (0004 bodg))') expect(address).to break_down_to({ :name => 'Graham Barr (0004 bodg)', :display_name => nil, :address => 'a909937', :comments => ['Graham Barr (0004 bodg)'], :domain => nil, :local => 'a909937', :format => 'a909937 (Graham Barr \(0004 bodg\))', :raw => 'a909937 (Graham Barr (0004 bodg))'}) end it "should handle |david d `zoo' zuhn |" do address = Mail::Address.new("david d `zoo' zuhn ") expect(address).to break_down_to({ :name => "david d `zoo' zuhn", :display_name => "david d `zoo' zuhn", :address => 'zoo@aggregate.com', :comments => nil, :domain => 'aggregate.com', :local => 'zoo', :format => "david d `zoo' zuhn ", :raw => "david d `zoo' zuhn "}) end it "should handle |(foo@bar.com (foobar), ned@foo.com (nedfoo) ) |" do address = Mail::Address.new('(foo@bar.com (foobar), ned@foo.com (nedfoo) ) ') expect(address).to break_down_to({ :name => 'foo@bar.com \(foobar\), ned@foo.com \(nedfoo\) ', :display_name => '(foo@bar.com \(foobar\), ned@foo.com \(nedfoo\) )', :address => 'kevin@goess.org', :comments => ['foo@bar.com (foobar), ned@foo.com (nedfoo) '], :domain => 'goess.org', :local => 'kevin', :format => '"(foo@bar.com \\\\(foobar\\\\), ned@foo.com \\\\(nedfoo\\\\) )" (foo@bar.com \(foobar\), ned@foo.com \(nedfoo\) )', :raw => '(foo@bar.com (foobar), ned@foo.com (nedfoo) ) '}) end it "should handle |Pete(A wonderful ) chap) |" do address = Mail::Address.new('Pete(A wonderful \) chap) ') expect(address).to break_down_to({ :name => 'Pete', :display_name => 'Pete', :address => 'pete(his account)@silly.test', :comments => ['A wonderful \\) chap', 'his account', 'his host'], :domain => 'silly.test', :local => 'pete(his account)', :format => 'Pete (A wonderful \\) chap his account his host)', :raw => 'Pete(A wonderful \\) chap) '}) end it "should handle |Joe Q. Public |" do address = Mail::Address.new('Joe Q. Public ') expect(address).to break_down_to({ :name => 'Joe Q. Public', :display_name => 'Joe Q. Public', :address => 'john.q.public@example.com', :comments => nil, :domain => 'example.com', :local => 'john.q.public', :format => '"Joe Q. Public" ', :raw => 'Joe Q. Public '}) end it "should handle |Mary Smith <@machine.tld:mary@example.net>|" do address = Mail::Address.new('Mary Smith <@machine.tld:mary@example.net>') expect(address).to break_down_to({ :name => 'Mary Smith', :display_name => 'Mary Smith', :address => '@machine.tld:mary@example.net', :comments => nil, :domain => 'example.net', :local => '@machine.tld:mary', :format => 'Mary Smith <@machine.tld:mary@example.net>', :raw => 'Mary Smith <@machine.tld:mary@example.net>'}) end it "should handle |jdoe@test . example|" do address = Mail::Address.new('jdoe@test . example') expect(address).to break_down_to({ :name => nil, :display_name => nil, :address => 'jdoe@test . example', :comments => nil, :domain => 'test . example', :local => 'jdoe', :format => 'jdoe@test . example', :raw => 'jdoe@test . example'}) end it "should handle |groupname+domain.com@example.com|" do address = Mail::Address.new('groupname+domain.com@example.com') expect(address).to break_down_to({ :name => nil, :display_name => nil, :address => 'groupname+domain.com@example.com', :comments => nil, :domain => 'example.com', :local => 'groupname+domain.com', :format => 'groupname+domain.com@example.com', :raw => 'groupname+domain.com@example.com'}) end it "should handle |=?UTF-8?B?8J+RjQ==?= <=?UTF-8?B?8J+RjQ==?=@=?UTF-8?B?8J+RjQ==?=.emoji>|" do address = Mail::Address.new('=?UTF-8?B?8J+RjQ==?= <=?UTF-8?B?8J+RjQ==?=@=?UTF-8?B?8J+RjQ==?=.emoji>') expect(address).to break_down_to({ :name => '👍', :display_name => '👍', :address => '👍@👍.emoji', :comments => nil, :domain => '👍.emoji', :local => '👍', :format => '"👍" <👍@👍.emoji>', :raw => '=?UTF-8?B?8J+RjQ==?= <=?UTF-8?B?8J+RjQ==?=@=?UTF-8?B?8J+RjQ==?=.emoji>'}) end it 'should handle |"Mikel \"quotes\" Lindsaar" |' do address = Mail::Address.new('"Mikel \"quotes\" Lindsaar" ') expect(address).to break_down_to({ :name => 'Mikel "quotes" Lindsaar', :display_name => 'Mikel "quotes" Lindsaar', :address => 'test@lindsaar.net', :comments => nil, :domain => 'lindsaar.net', :local => 'test', :format => '"Mikel \"quotes\" Lindsaar" ', :raw => '"Mikel \"quotes\" Lindsaar" '}) end it 'should handle |"Mikel \" Lindsaar" |' do address = Mail::Address.new('"Mikel \" Lindsaar" ') expect(address).to break_down_to({ :name => 'Mikel " Lindsaar', :display_name => 'Mikel " Lindsaar', :address => 'test@lindsaar.net', :comments => nil, :domain => 'lindsaar.net', :local => 'test', :format => '"Mikel \" Lindsaar" ', :raw => '"Mikel \" Lindsaar" '}) end it 'should handle |"Mikel \"quotes\" (and comments) Lindsaar" (comment1)|' do address = Mail::Address.new('"Mikel \"quotes\" (and comments) Lindsaar" (comment1)') expect(address).to break_down_to({ :name => 'Mikel "quotes" (and comments) Lindsaar', :display_name => 'Mikel "quotes" (and comments) Lindsaar', :address => 'test(comment2)@lindsaar.net', :comments => ['comment1', 'comment2', 'comment3'], :domain => 'lindsaar.net', :local => 'test(comment2)', :format => '"Mikel \"quotes\" (and comments) Lindsaar" (comment1 comment2 comment3)', :raw => '"Mikel \"quotes\" (and comments) Lindsaar" (comment1)'}) end it "should expose group" do struct = Mail::Parsers::AddressListsParser::AddressStruct.new(nil, nil, nil, nil, nil, nil, "GROUP", nil) address = Mail::Address.new(struct) expect(address.group).to eq("GROUP") end it "should have no group by default" do expect(Mail::Address.new(nil).group).to eq(nil) end end end describe "creating" do describe "parts of an address" do it "should add an address" do address = Mail::Address.new address.address = "mikel@test.lindsaar.net" expect(address).to break_down_to({:address => 'mikel@test.lindsaar.net'}) end it "should add a display name" do address = Mail::Address.new address.display_name = "Mikel Lindsaar" expect(address.display_name).to eq 'Mikel Lindsaar' end end end describe "modifying an address" do it "should add an address" do address = Mail::Address.new address.address = "mikel@test.lindsaar.net" expect(address).to break_down_to({:address => 'mikel@test.lindsaar.net'}) end it "should add a display name" do address = Mail::Address.new address.display_name = "Mikel Lindsaar" expect(address.display_name).to eq 'Mikel Lindsaar' end it "should take an address and a display name and join them" do address = Mail::Address.new address.address = "mikel@test.lindsaar.net" address.display_name = "Mikel Lindsaar" expect(address.format).to eq 'Mikel Lindsaar ' end it "should take a display name and an address and join them" do address = Mail::Address.new address.display_name = "Mikel Lindsaar" address.address = "mikel@test.lindsaar.net" expect(address.format).to eq 'Mikel Lindsaar ' end end describe "providing encoded and decoded outputs" do it "should provide an encoded output" do address = Mail::Address.new address.display_name = "Mikel Lindsaar" address.address = "mikel@test.lindsaar.net" expect(address.encoded).to eq 'Mikel Lindsaar ' end it "should provide an encoded output for non us-ascii" do address = Mail::Address.new address.display_name = "まける" address.address = "mikel@test.lindsaar.net" expect(address.encoded).to eq '=?UTF-8?B?44G+44GR44KL?= ' end it "should provide an encoded output for non us-ascii" do address = Mail::Address.new address.display_name = "まける" address.address = "mikel@test.lindsaar.net" expect(address.decoded).to eq '"まける" ' end end end mail-2.8.1/spec/mail/elements/date_time_element_spec.rb000066400000000000000000000011451436372131700231470ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::DateTimeElement do it "should parse a date" do date_text = 'Wed, 27 Apr 2005 14:15:31 -0700' expect { Mail::DateTimeElement.new(date_text) }.not_to raise_error end it "should raise an error if the input is nil" do date_text = nil expect { Mail::DateTimeElement.new(date_text) }.to raise_error(Mail::Field::ParseError) end it "should raise an error if the input is useless" do date_text = '""""""""""""""""' expect { Mail::DateTimeElement.new(date_text) }.to raise_error(Mail::Field::ParseError) end end mail-2.8.1/spec/mail/elements/envelope_from_element_spec.rb000066400000000000000000000034131436372131700240540ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::EnvelopeFromElement do describe "parsing a from envelope string" do it "should parse a full field" do expect { Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net Mon Aug 7 00:39:21 2009") }.not_to raise_error end it "should parse a full field with a double digit day" do expect { Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") }.not_to raise_error end it "should parse a full field with a single space day" do expect { Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") }.not_to raise_error end it "should parse a null sender, when specified as <>" do expect { Mail::EnvelopeFromElement.new("<> Mon Aug 17 00:39:21 2009") }.not_to raise_error end it "should parse a null sender, with a single space day" do expect { Mail::EnvelopeFromElement.new("<> Mon Aug 17 00:39:21 2009") }.not_to raise_error end end describe "accessor methods" do it "should return the address" do envelope = Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") expect(envelope.address).to eq "mikel@test.lindsaar.net" end it "should return the date_time" do envelope = Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") expect(envelope.date_time).to eq ::DateTime.parse("Mon Aug 17 00:39:21 2009") end end describe 'formatting' do it 'should format delivery date using UNIX ctime style' do time = Time.now envelope = Mail::EnvelopeFromElement.new("mikel@test.lindsaar.net #{time.ctime}") expect(envelope.to_s).to eq "mikel@test.lindsaar.net #{time.ctime}" end end end mail-2.8.1/spec/mail/elements/message_ids_element_spec.rb000066400000000000000000000030321436372131700234740ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::MessageIdsElement do it "should parse a message_id" do msg_id_text = '<1234@test.lindsaar.net>' expect { Mail::MessageIdsElement.new(msg_id_text) }.not_to raise_error end it "should parse multiple message_ids" do msg_id_text = '<1234@test.lindsaar.net> <1234@test.lindsaar.net>' expect { Mail::MessageIdsElement.new(msg_id_text) }.not_to raise_error end it "treats nil as an empty list" do element = Mail::MessageIdsElement.new(nil) expect(element.message_ids).to eq [] expect(element.message_id).to be_nil end it "should raise an error if the input is useless" do msg_id_text = '""""""""""""""""' expect { Mail::MessageIdsElement.new(msg_id_text) }.to raise_error(Mail::Field::ParseError) end it "should respond to message_ids" do msg_id_text = '<1234@test.lindsaar.net> <1234@test.lindsaar.net>' msg_ids = Mail::MessageIdsElement.new(msg_id_text) expect(msg_ids.message_ids).to eq ['1234@test.lindsaar.net', '1234@test.lindsaar.net'] end it "should respond to message_id" do msg_id_text = '<1234@test.lindsaar.net>' msg_ids = Mail::MessageIdsElement.new(msg_id_text) expect(msg_ids.message_id).to eq '1234@test.lindsaar.net' end it "should not fail to parse a message id with dots in it" do text = "<4afb664ca3078_48dc..fdbe32b865532b@ax-desktop.mail>" m = Mail::MessageIdsElement.new(text) expect(m.message_id).to eq "4afb664ca3078_48dc..fdbe32b865532b@ax-desktop.mail" end end mail-2.8.1/spec/mail/elements/phrase_list_spec.rb000066400000000000000000000011671436372131700220240ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::PhraseList do describe "parsing" do it "should parse a phrase list" do parse_text = '"Mikel Lindsaar", "Mikel", you, somewhere' expect { Mail::PhraseList.new(parse_text) }.not_to raise_error end it "treats nil as an empty list" do list = Mail::PhraseList.new(nil) expect(list.phrases).to eq [] end it "should not raise an error if the input is useless" do parse_text = '""""""""""""""""' expect(Mail::PhraseList.new(parse_text).phrases).to eq [parse_text[1...-1]] end end end mail-2.8.1/spec/mail/elements/received_element_spec.rb000066400000000000000000000024051436372131700230020ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ReceivedElement do it "should raise an error if the input is nil" do received = Mail::ReceivedElement.new(nil) expect(received.info).to be_nil expect(received.date_time).to be_nil end it "should raise an error if the input is useless" do received_text = '""""""""""""""""' expect { Mail::ReceivedElement.new(received_text) }.to raise_error(Mail::Field::ParseError) end it "should give back the date time" do received_text = 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)' date_text = '10 May 2005 17:26:50 +0000 (GMT)' rec = Mail::ReceivedElement.new(received_text) expect(rec.date_time).to eq ::DateTime.parse(date_text) end it "should give back the info" do received_text = 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)' info_text = 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ' rec = Mail::ReceivedElement.new(received_text) expect(rec.info).to eq info_text end end mail-2.8.1/spec/mail/encoding_spec.rb000066400000000000000000000203501436372131700174540ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "mail encoding" do it "should allow you to assign an email-wide charset" do mail = Mail.new mail.charset = 'utf-8' expect(mail.charset).to eq 'utf-8' end describe "using default encoding" do it "should allow you to send in unencoded strings to fields and encode them" do mail = Mail.new mail.charset = 'utf-8' mail.subject = "This is あ string" result = "Subject: =?UTF-8?Q?This_is_=E3=81=82_string?=\r\n" expect(mail[:subject].encoded).to eq result end it "should allow you to send in unencoded strings to address fields and encode them" do mail = Mail.new mail.charset = 'utf-8' mail.to = "Mikel Lindsああr " result = "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= \r\n" expect(mail[:to].encoded).to eq result end it "should allow you to send in unencoded strings to address fields and encode them" do mail = Mail.new mail.charset = 'utf-8' mail.to = "あdあ " result = "To: =?UTF-8?B?44GCZOOBgg==?= \r\n" expect(mail[:to].encoded).to eq result end it "should allow you to send in multiple unencoded strings to address fields and encode them" do mail = Mail.new mail.charset = 'utf-8' mail.to = ["Mikel Lindsああr ", "あdあ "] result = "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" expect(mail[:to].encoded).to eq result end it "should allow you to send unquoted non us-ascii strings, with spaces in them" do mail = Mail.new mail.charset = 'utf-8' mail.to = ["Foo áëô îü "] result = "To: =?UTF-8?B?Rm9vIMOhw6vDtCDDrsO8?= \r\n" expect(mail[:to].encoded).to eq result end it "should allow you to send in multiple unencoded strings to any address field" do mail = Mail.new mail.charset = 'utf-8' ['To', 'From', 'Cc', 'Reply-To'].each do |field| mail.send("#{field.downcase.gsub("-", '_')}=", ["Mikel Lindsああr ", "あdあ "]) result = "#{field}: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" expect(mail[field].encoded).to eq result end end it "should handle groups" do mail = Mail.new mail.charset = 'utf-8' mail.to = "test1@lindsaar.net, group: test2@lindsaar.net, me@lindsaar.net;" result = "To: test1@lindsaar.net, \r\n\sgroup: test2@lindsaar.net, \r\n\sme@lindsaar.net;\r\n" expect(mail[:to].encoded).to eq result end it "should handle groups with funky characters" do mail = Mail.new mail.charset = 'utf-8' mail.to = '"Mikel Lindsああr" , group: "あdあ" , me@lindsaar.net;' result = "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\sgroup: =?UTF-8?B?44GCZOOBgg==?= , \r\n\sme@lindsaar.net;\r\n" expect(mail[:to].encoded).to eq result end describe "quoting token safe chars" do it "should not quote the display name if unquoted" do mail = Mail.new mail.charset = 'utf-8' mail.to = 'Mikel Lindsaar ' expect(mail[:to].encoded).to eq %{To: Mikel Lindsaar \r\n} end it "should not quote the display name if already quoted" do mail = Mail.new mail.charset = 'utf-8' mail.to = '"Mikel Lindsaar" ' expect(mail[:to].encoded).to eq %{To: Mikel Lindsaar \r\n} end end describe "quoting token unsafe chars" do it "should quote the display name" do mail = Mail.new mail.charset = 'utf-8' mail.to = "Mikel @ me Lindsaar " expect(mail[:to].encoded).to eq %{To: "Mikel @ me Lindsaar" \r\n} end it "should preserve quotes needed from the user and not double quote" do mail = Mail.new mail.charset = 'utf-8' mail.to = %{"Mikel @ me Lindsaar" } expect(mail[:to].encoded).to eq %{To: "Mikel @ me Lindsaar" \r\n} end end end describe "specifying an email-wide encoding" do it "should allow you to send in unencoded strings to fields and encode them" do mail = Mail.new mail.charset = 'ISO-8859-1' subject = "This is \xE4 string" subject = subject.dup.force_encoding('ISO8859-1') mail.subject = subject result = mail[:subject].encoded if result.respond_to?(:force_encoding) expect(result.encoding).to eq Encoding::UTF_8 end expect(result).to eq "Subject: =?ISO-8859-1?Q?This_is_=E4_string?=\r\n" end it "should allow you to send in unencoded strings to address fields and encode them" do mail = Mail.new mail.charset = 'ISO-8859-1' string = "Mikel Linds\xE4r " string = string.dup.force_encoding('ISO8859-1') mail.to = string result = mail[:to].encoded if result.respond_to?(:force_encoding) expect(result.encoding).to eq Encoding::UTF_8 end expect(result).to eq "To: Mikel =?ISO-8859-1?B?TGluZHPkcg==?= \r\n" end it "should allow you to send in multiple unencoded strings to address fields and encode them" do mail = Mail.new mail.charset = 'ISO-8859-1' array = ["Mikel Linds\xE4r ", "\xE4d "] array.map! { |a| a.dup.force_encoding('ISO8859-1') } mail.to = array result = mail[:to].encoded if result.respond_to?(:force_encoding) expect(result.encoding).to eq Encoding::UTF_8 end expect(result).to eq "To: Mikel =?ISO-8859-1?B?TGluZHPkcg==?= , \r\n =?ISO-8859-1?B?5GQ=?= \r\n" end %w[ To From Cc Reply-To ].each do |field| array = ["Mikel Linds\xE4r ", "\xE4d "] array.map! { |a| a.dup.force_encoding('ISO-8859-1') } it "allows multiple unencoded strings in #{field}" do mail = Mail.new mail.charset = 'ISO-8859-1' mail.send("#{Mail::Utilities.underscoreize(field)}=", array) expect(mail[field].errors).to eq [] result = mail[field].encoded expect(result.encoding).to eq Encoding::UTF_8 if result.respond_to?(:force_encoding) expect(result).to eq "#{field}: Mikel =?ISO-8859-1?B?TGluZHPkcg==?= , \r\n\s=?ISO-8859-1?B?5GQ=?= \r\n" end end end it "should let you define a charset per part" do mail = Mail.new part = Mail::Part.new part.content_type = "text/html" part.charset = "ISO-8859-1" part.body = "blah" mail.add_part(part) expect(mail.parts[0].content_type).to eq "text/html; charset=ISO-8859-1" end it "should replace invalid characters" do m = Mail.new m['Subject'] = Mail::SubjectField.new("=?utf-8?Q?Hello_=96_World?=") replace = '�' expect(m.subject).to eq "Hello #{replace} World" end it "should replace characters of unknown and invalid encoding" do m = Mail.new m['Subject'] = Mail::SubjectField.new("Hello=?UNKNOWN?B?4g==?=") replace = '�' expect(m.subject).to eq "Hello#{replace}" end describe "#pick_encoding" do it "picks binary for nil" do expect { ::Encoding.find(nil) }.to raise_error(TypeError) expect(Mail::Utilities.pick_encoding(nil)).to eq(Encoding::BINARY) end { "latin2" => Encoding::ISO_8859_2, "ISO_8859-1" => Encoding::ISO_8859_1, "cp-850" => Encoding::CP850, "" => Encoding::BINARY }.each do |from, to| it "should support #{from}" do expect { ::Encoding.find(from) }.to raise_error(ArgumentError) expect(Mail::Utilities.pick_encoding(from)).to eq(to) end end end end mail-2.8.1/spec/mail/encodings/000077500000000000000000000000001436372131700163005ustar00rootroot00000000000000mail-2.8.1/spec/mail/encodings/base64_spec.rb000066400000000000000000000013241436372131700207230ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::Encodings::Base64 do it "should encode base 64 from text" do result = "VGhpcyBpcyBhIHRlc3Q=\r\n" expect(Mail::Encodings::Base64.encode('This is a test')).to eq result end it "should decode base 64 text" do result = 'This is a test' expect(Mail::Encodings::Base64.decode("VGhpcyBpcyBhIHRlc3Q=\n")).to eq result end it "should encode base 64 from binary" do result = "AAAAAA==\r\n" expect(Mail::Encodings::Base64.encode("\000\000\000\000")).to eq result end it "should decode base 64 text" do result = "\000\000\000\000" expect(Mail::Encodings::Base64.decode("AAAAAA==\n")).to eq result end end mail-2.8.1/spec/mail/encodings/quoted_printable_spec.rb000066400000000000000000000047531436372131700232110ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::Encodings::QuotedPrintable do it "should encode quoted printable from text" do result = "This is\r\na test=\r\n" expect(Mail::Encodings::QuotedPrintable.encode("This is\na test")).to eq result end it "should encode quoted printable from crlf text" do result = "This is\r\na test=\r\n" expect(Mail::Encodings::QuotedPrintable.encode("This is\r\na test")).to eq result end it "should encode quoted printable from cr text" do result = "This is\r\na test=\r\n" expect(Mail::Encodings::QuotedPrintable.encode("This is\ra test")).to eq result end it "should bypass line ending conversion for binary encoding" do text = "test \r \xF0\x9F\x8D\xBF" text = text.dup.force_encoding(Encoding::BINARY) if text.respond_to?(:force_encoding) expect(Mail::Encodings::QuotedPrintable.encode(text)).to eq "test =0D =F0=9F=8D=BF=\r\n" end it "should decode quoted printable" do result = "This is\na test" expect(Mail::Encodings::QuotedPrintable.decode("This is\r\na test")).to eq result end it "should encode quoted printable from binary" do text = "\000\000\r\xF0\x9F\x98\x8A\n\000\000" text = text.dup.force_encoding(Encoding::BINARY) if text.respond_to?(:force_encoding) expect(Mail::Encodings::QuotedPrintable.encode(text)).to eq "=00=00=0D=F0=9F=98=8A\r\n=00=00=\r\n" end it "should decode quoted printable text" do result = "\000\000\n\000\000" expect(Mail::Encodings::QuotedPrintable.decode("=00=00=0D=0A=00=00")).to eq result end it "should bypass line ending conversion for binary decoding" do result = "test \r \xF0\x9F\x8D\xBF" result = result.dup.force_encoding(Encoding::BINARY) if result.respond_to?(:force_encoding) expect(Mail::Encodings::QuotedPrintable.decode("test =0D =F0=9F=8D=BF=\n")).to eq result end [["\r", "=0D"], ["\n", "=0A"], ["\r\n", "=0D=0A"]].each do |crlf, linebreak| expected = "first line wraps\n\nsecond paragraph" it "should cope with inappropriate #{linebreak} line break encoding" do body = "first line=\r\n wraps#{linebreak}\r\n#{linebreak}\r\nsecond paragraph=\r\n" expect(Mail::Encodings::QuotedPrintable.decode(body)).to eq expected end it "should allow encoded #{linebreak} line breaks with soft line feeds" do body = "first line=\r\n wraps#{linebreak}=\r\n#{linebreak}=\r\nsecond paragraph=\r\n" expect(Mail::Encodings::QuotedPrintable.decode(body)).to eq expected end end end mail-2.8.1/spec/mail/encodings/transfer_encoding_spec.rb000066400000000000000000000005021436372131700233260ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::Encodings::TransferEncoding do it "accepts blank message_encoding" do expect(described_class.negotiate('', '7bit', '')).to eq Mail::Encodings::SevenBit expect(described_class.negotiate('', '8bit', '')).to eq Mail::Encodings::EightBit end end mail-2.8.1/spec/mail/encodings/unix_to_unix_spec.rb000066400000000000000000000030031436372131700223630ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Encodings::UnixToUnix do def decode(str) Mail::Encodings::UnixToUnix.decode(str) end def encode(str) Mail::Encodings::UnixToUnix.encode(str) end it "is registered as uuencode" do expect(Mail::Encodings.get_encoding('uuencode')).to eq(Mail::Encodings::UnixToUnix) end it "is registered as x-uuencode" do expect(Mail::Encodings.get_encoding('x-uuencode')).to eq(Mail::Encodings::UnixToUnix) end it "is registered as x-uue" do expect(Mail::Encodings.get_encoding('x-uue')).to eq(Mail::Encodings::UnixToUnix) end it "can transport itself" do expect(Mail::Encodings::UnixToUnix.can_transport?(Mail::Encodings::UnixToUnix)).to be_truthy end it "decodes" do text = strip_heredoc(<<-TEXT) begin 644 Happy.txt M2&%P<'D@=&]D87D@9F]R('1O(&)E(&]N92!O9B!P96%C92!A;F0@ # To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= # CC: =?ISO-8859-1?Q?Andr=E9?= Pirard # Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= # =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= # # Note: In the first 'encoded-word' of the Subject field above, the # last "=" at the end of the 'encoded-text' is necessary because each # 'encoded-word' must be self-contained (the "=" character completes a # group of 4 base64 characters representing 2 octets). An additional # octet could have been encoded in the first 'encoded-word' (so that # the encoded-word would contain an exact multiple of 3 encoded # octets), except that the second 'encoded-word' uses a different # 'charset' than the first one. # it "should just return the string if us-ascii and asked to B encoded string" do string = "This is a string" result = "This is a string" if string.respond_to?(:force_encoding) string = string.dup.force_encoding('US-ASCII') expect(Mail::Encodings.b_value_encode(string)).to eq(result) else encoding = 'US-ASCII' expect(Mail::Encodings.b_value_encode(string, encoding)).to eq(result) end end it "should accept other encodings" do string = "This is あ string" result = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' if string.respond_to?(:force_encoding) string = string.dup.force_encoding('UTF-8') expect(Mail::Encodings.b_value_encode(string)).to eq(result) else string = "This is あ string" encoding = 'UTF-8' expect(Mail::Encodings.b_value_encode(string, encoding)).to eq(result) end end it "should correctly encode long string mixing with single/multi-byte characters" do input = '意地悪 sample; = filename= name= "file" 笑.txt' encoded = Mail::Encodings.decode_encode(input, :encode) decoded = Mail::Encodings.decode_encode(encoded, :decode) expect(decoded).to eq(input) end it "should complain if there is no encoding passed for Ruby < 1.9" do string = "This is あ string" if string.respond_to?(:force_encoding) string = string.dup.force_encoding('UTF-8') expect {Mail::Encodings.b_value_encode(string)}.not_to raise_error else expect {Mail::Encodings.b_value_encode(string, nil)}.to raise_error("Must supply an encoding") end end it "should split the string up into bite sized chunks that can be wrapped easily" do string = "This is あ really long string This is あ really long string This is あ really long string This is あ really long string This is あ really long string" result = '=?UTF-8?B?VGhpcyBpcyDjgYIgcmVhbGx5IGxvbmcgc3RyaW5nIFRoaXMgaXMg44GCIHJl?= =?UTF-8?B?YWxseSBsb25nIHN0cmluZyBUaGlzIGlzIOOBgiByZWFsbHkgbG9uZyBzdHJp?= =?UTF-8?B?bmcgVGhpcyBpcyDjgYIgcmVhbGx5IGxvbmcgc3RyaW5nIFRoaXMgaXMg44GC?= =?UTF-8?B?IHJlYWxseSBsb25nIHN0cmluZw==?=' if string.respond_to?(:force_encoding) string = string.dup.force_encoding('UTF-8') expect(Mail::Encodings.b_value_encode(string)).to eq(result) else encoding = 'UTF-8' expect(Mail::Encodings.b_value_encode(string, encoding)).to eq(result) end end it "should decode an encoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should decode a long encoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgcmVhbGx5IGxvbmcgc3RyaW5nIFRoaXMgaXMg44GCIHJl?= =?UTF-8?B?YWxseSBsb25nIHN0cmluZyBUaGlzIGlzIOOBgiByZWFsbHkgbG9uZyBzdHJp?= =?UTF-8?B?bmcgVGhpcyBpcyDjgYIgcmVhbGx5IGxvbmcgc3RyaW5nIFRoaXMgaXMg44GC?= =?UTF-8?B?IHJlYWxseSBsb25nIHN0cmluZw==?=' result = "This is あ really long string This is あ really long string This is あ really long string This is あ really long string This is あ really long string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should decode UTF-16 encoded string" do string = "=?UTF-16?B?MEIwRDBGMEgwSg==?=" result = "あいうえお" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should decode UTF-32 encoded string" do string = "=?UTF-32?B?AAAwQgAAMEQAADBGAAAwSAAAMEo=?=" result = "あいうえお" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should decode a string that looks similar to an encoded string (contains '=?')" do string = "1+1=?" expect(Mail::Encodings.value_decode(string)).to eq(string) end it "should parse adjacent encoded-words separated by linear white-space" do string = "=?utf-8?B?0L3QvtCy0YvQuSDRgdC+0YLRgNGD0LTQvdC40Log4oCUINC00L7RgNC+0YQ=?=\n =?utf-8?B?0LXQtdCy?=" result = "новый сотрудник — дорофеев" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should parse adjacent words with no space" do string = "=?utf-8?B?0L3QvtCy0YvQuSDRgdC+0YLRgNGD0LTQvdC40Log4oCUINC00L7RgNC+0YQ=?==?utf-8?B?0LXQtdCy?=" result = "новый сотрудник — дорофеев" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should collapse adjacent words with multiple encodings on one line seperated by non-spaces" do string = "Re:[=?iso-2022-jp?B?GyRCJTAlayE8JV0lcyEmJTglYyVRJXMzdDwwMnEbKEI=?=\n =?iso-2022-jp?B?GyRCPFIbKEI=?=] =?iso-2022-jp?B?GyRCSlY/LiEnGyhC?=\n =?iso-2022-jp?B?GyRCIVolMCVrITwlXSVzIVskKkxkJCQ5ZyRvJDsbKEI=?=\n =?iso-2022-jp?B?GyRCJE43byRLJEQkJCRGIUolaiUvJSglOSVIGyhC?=#1056273\n =?iso-2022-jp?B?GyRCIUsbKEI=?=" result = "Re:[グルーポン・ジャパン株式会社] 返信:【グルーポン】お問い合わせの件について(リクエスト#1056273\n )" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should decode a blank string" do expect(Mail::Encodings.value_decode("=?utf-8?B??=")).to eq "" end it "should decode a string, even with an invalid encoding name" do string = "=?BAD-ENCODING?B?VEVTVA==?=" result = 'TEST' expect(Mail::Encodings.value_decode(string)).to eq(result) end if '1.9'.respond_to?(:force_encoding) it "should decode 8bit encoded string" do string = "=?8bit?Q?ALPH=C3=89E?=" result = "ALPH\xC3\x89E" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should decode ks_c_5601-1987 encoded string" do string = '=?ks_c_5601-1987?B?seggx/bB+A==?= '.dup.force_encoding('us-ascii') expect(Mail::Encodings.value_decode(string)).to eq("김 현진 ") end it "should decode shift-jis encoded string" do string = '=?shift-jis?Q?=93=FA=96{=8C=EA=?='.dup.force_encoding('us-ascii') expect(Mail::Encodings.value_decode(string)).to eq("日本語") end it "should decode GB18030 encoded string misidentified as GB2312" do string = '=?GB2312?B?6V8=?='.dup.force_encoding('us-ascii') expect(Mail::Encodings.value_decode(string)).to eq("開") end it "should decode an invalid utf-7 byte sequence" do string = "=?utf-7?B?aVBhZHMsIE1hY0Jvb2tzLCAmIG1vcmUgdXAgdG8gOTArQUNVLSBPZmY=?=" result = "iPads, MacBooks, & more up to 90+ACU- Off" expect(Mail::Encodings.value_decode(string)).to eq(result) end end end describe "Q encodings" do # From rfc2047: # From: =?US-ASCII?Q?Keith_Moore?= # To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= # CC: =?ISO-8859-1?Q?Andr=E9?= Pirard # Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= # =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= # # Note: In the first 'encoded-word' of the Subject field above, the # last "=" at the end of the 'encoded-text' is necessary because each # 'encoded-word' must be self-contained (the "=" character completes a # group of 4 base64 characters representing 2 octets). An additional # octet could have been encoded in the first 'encoded-word' (so that # the encoded-word would contain an exact multiple of 3 encoded # octets), except that the second 'encoded-word' uses a different # 'charset' than the first one. # it "should just return the string if us-ascii and asked to Q encoded string" do string = "This is a string" if string.respond_to?(:force_encoding) string = string.dup.force_encoding('US-ASCII') expect(Mail::Encodings.q_value_encode(string)).to eq "This is a string" else encoding = 'US-ASCII' expect(Mail::Encodings.q_value_encode(string, encoding)).to eq "This is a string" end end it "should complain if there is no encoding passed for Ruby < 1.9" do string = "This is あ string" if string.respond_to?(:force_encoding) string = string.dup.force_encoding('UTF-8') expect {Mail::Encodings.q_value_encode(string)}.not_to raise_error else expect {Mail::Encodings.q_value_encode(string)}.to raise_error("Must supply an encoding") end end it "should accept other character sets" do string = "This is あ string" if string.respond_to?(:force_encoding) string = string.dup.force_encoding('UTF-8') expect(Mail::Encodings.q_value_encode(string)).to eq '=?UTF-8?Q?This_is_=E3=81=82_string?=' else encoding = 'UTF-8' expect(Mail::Encodings.q_value_encode(string, encoding)).to eq '=?UTF-8?Q?This_is_=E3=81=82_string?=' end end it "should decode an encoded string" do string = '=?UTF-8?Q?This_is_=E3=81=82_string?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') if string.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should decode q encoded =5F as underscore" do string = "=?UTF-8?Q?This_=C2=AD_and=5Fthat?=" result = "This ­ and_that" result = result.dup.force_encoding('UTF-8') if string.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should not fold a long string that has no spaces" do original = "ВосстановлениеВосстановлениеВашегопароля" if original.respond_to?(:force_encoding) original = original.dup.force_encoding('UTF-8') result = "Subject: =?UTF-8?Q?=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=B0=D1=88=D0=B5=D0=B3=D0=BE=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F?=\r\n" else result = "Subject: =?UTF-8?Q?=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=B0=D1=88=D0=B5=D0=B3=D0=BE=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F?=\r\n" end mail = Mail.new mail.subject = original expect(mail[:subject].decoded).to eq original expect(mail[:subject].encoded).to eq result end it "should round trip a complex string properly" do original = "ВосстановлениеВосстановлениеВашегопароля This is a NUT?????Z__string that== could (break) anything" if original.respond_to?(:force_encoding) original = original.dup.force_encoding('UTF-8') end result = "Subject: =?UTF-8?Q?=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=92=D0=B0=D1=88=D0=B5=D0=B3=D0=BE=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F?=\r\n =?UTF-8?Q?_This_is_a_NUT=3F=3F=3F=3F=3FZ=5F=5Fstring_that=3D=3D_could?=\r\n =?UTF-8?Q?_=28break=29_anything?=\r\n" mail = Mail.new mail.subject = original expect(mail[:subject].decoded).to eq original expect(mail[:subject].encoded).to eq result mail = Mail.new(mail.encoded) expect(mail[:subject].decoded).to eq original expect(mail[:subject].encoded).to eq result mail = Mail.new(mail.encoded) expect(mail[:subject].decoded).to eq original expect(mail[:subject].encoded).to eq result end it "should round trip another complex string (koi-8)" do original = "Слово 9999 и число" mail = Mail.new mail.subject = (original.respond_to?(:encode) ? original.encode('koi8-r') : Iconv.conv('koi8-r', 'UTF-8', original)) mail[:subject].charset = 'koi8-r' wrapped = mail[:subject].wrapped_value unwrapped = Mail::Encodings.value_decode(wrapped) expect(unwrapped.gsub("Subject: ", "")).to eq original end it "should decode a blank string" do expect(Mail::Encodings.value_decode("=?utf-8?Q??=")).to eq "" end it "should decode a string with spaces" do expect(Mail::Encodings.value_decode("=?utf-8?Q?a a?=")).to eq "a a" end it "should decode a string ending with an unencoded question mark" do expect(Mail::Encodings.value_decode("=?UTF-8?Q?=C3=A5???=")).to eq "å??" end it "should treat unrecognized charsets as binary" do expect(Mail::Encodings.value_decode("=?ISO-FOOO?Q?Morten_R=F8verdatt=E9r?=")).to eq "Morten R�verdatt�r" end end describe "mixed Q and B encodings" do it "should decode an encoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?= =?UTF-8?Q?_This_was_=E3=81=82_string?=' result = "This is あ string This was あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end end describe "parameter MIME encodings" do # Character set and language information may be combined with the # parameter continuation mechanism. For example: # # Content-Type: application/x-stuff # title*0*=us-ascii'en'This%20is%20even%20more%20 # title*1*=%2A%2A%2Afun%2A%2A%2A%20 # title*2="isn't it!" # # Note that: # # (1) Language and character set information only appear at # the beginning of a given parameter value. # # (2) Continuations do not provide a facility for using more # than one character set or language in the same # parameter value. # # (3) A value presented using multiple continuations may # contain a mixture of encoded and unencoded segments. # # (4) The first segment of a continuation MUST be encoded if # language and character set information are given. # # (5) If the first segment of a continued parameter value is # encoded the language and character set field delimiters # MUST be present even when the fields are left blank. # before(:each) do Mail.defaults do param_encode_language('en') end end it "should leave an unencoded string alone" do string = "this isn't encoded" result = "this isn't encoded" expect(Mail::Encodings.param_decode(string, 'us-ascii')).to eq result end it "should unencode an encoded string" do string = "This%20is%20even%20more%20" result = "This is even more " result = result.dup.force_encoding('us-ascii') if result.respond_to?(:force_encoding) expect(Mail::Encodings.param_decode(string, 'us-ascii')).to eq result end it "should unencoded an encoded string and return the right charset on 1.9" do string = "This%20is%20even%20more%20" result = "This is even more " result = result.dup.force_encoding('us-ascii') if result.respond_to?(:force_encoding) expect(Mail::Encodings.param_decode(string, 'us-ascii')).to eq result end it "should unencode a complete string that included unencoded parts" do string = "This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20isn't it" result = "This is even more ***fun*** isn't it" result = result.dup.force_encoding('iso-8859-1') if result.respond_to?(:force_encoding) expect(Mail::Encodings.param_decode(string, 'iso-8859-1')).to eq result end it "should encode a string" do string = "This is あ string" expect(Mail::Encodings.param_encode(string)).to eq "utf-8'en'This%20is%20%20%E3%81%82%20string" end it "should just quote US-ASCII with spaces" do string = "This is even more" expect(Mail::Encodings.param_encode(string)).to eq '"This is even more"' end it "should leave US-ASCII without spaces alone" do string = "fun" expect(Mail::Encodings.param_encode(string)).to eq 'fun' end end describe "decoding a string and detecting the encoding type" do it "should detect an encoded Base64 string to the decoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a multiple encoded Base64 string to the decoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?==?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a multiple encoded Base64 string with a space to the decoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?= =?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a multiple encoded Base64 string with a whitespace to the decoded string" do string = "=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?= \r\n\s=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=" result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should decode B and Q encodings together if needed" do string = "=?UTF-8?Q?This_is_=E3=81=82_string?==?UTF-8?Q?This_is_=E3=81=82_string?= Some non encoded stuff =?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?= \r\n\sMore non encoded stuff" result = "This is あ stringThis is あ string Some non encoded stuff This is あ string \r\n\sMore non encoded stuff" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a encoded and unencoded Base64 string to the decoded string" do string = "Some non encoded stuff =?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?= \r\n\sMore non encoded stuff" result = "Some non encoded stuff This is あ string \r\n\sMore non encoded stuff" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect an encoded QP string to the decoded string" do string = '=?UTF-8?Q?This_is_=E3=81=82_string?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should decode UTF-16 encoded string" do string = "=?UTF-16?Q?0B0D0F0H0J=?=" result = "あいうえお" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should decode UTF-32 encoded string" do string = "=?UTF-32?Q?=00=000B=00=000D=00=000F=00=000H=00=000J=?=" result = "あいうえお" expect(Mail::Encodings.value_decode(string)).to eq(result) end it "should detect multiple encoded QP string to the decoded string" do string = '=?UTF-8?Q?This_is_=E3=81=82_string?==?UTF-8?Q?This_is_=E3=81=82_string?=' result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect multiple encoded QP string with a space to the decoded string" do string = '=?UTF-8?Q?This_is_=E3=81=82_string?= =?UTF-8?Q?This_is_=E3=81=82_string?=' result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect multiple encoded QP string with a space to the decoded string" do string = "=?UTF-8?Q?This_is_=E3=81=82_string?= \r\n\s=?UTF-8?Q?This_is_=E3=81=82_string?=" result = "This is あ stringThis is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a encoded and unencoded QP string to the decoded string" do string = "Some non encoded stuff =?UTF-8?Q?This_is_=E3=81=82_string?= \r\n\sMore non encoded stuff" result = "Some non encoded stuff This is あ string \r\n\sMore non encoded stuff" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should detect a plain string and return it" do string = 'This is あ string' result = "This is あ string" result = result.dup.force_encoding('UTF-8') if result.respond_to?(:force_encoding) expect(Mail::Encodings.value_decode(string)).to eq result end it "should handle a very long string efficiently" do skip "fails randomly" expect do |n| long_string = "This is a string " * n Mail::Encodings.value_decode(long_string) end.to perform_linear.in_range(8, 128_000) end it "should handle Base64 encoded ISO-2022-JP string" do string = "ISO-2022-JP =?iso-2022-jp?B?GyRCJCQkPSRLITwkXiRrJEskSyE8JDgkJyQkJFQhPBsoQg==?=" result = "ISO-2022-JP いそにーまるににーじぇいぴー" expect(Mail::Encodings.value_decode(string)).to eq result end end describe "altering an encoded text to decoded and visa versa" do describe "decoding" do it "should detect an encoded Base64 string and return the decoded string" do string = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') expect(Mail::Encodings.decode_encode(string, :decode)).to eq result end it "should detect an encoded QP string and return the decoded string" do string = '=?UTF-8?Q?This_is_=E3=81=82_string?=' result = "This is あ string" result = result.dup.force_encoding('UTF-8') expect(Mail::Encodings.decode_encode(string, :decode)).to eq result end it "should detect an a string is already decoded and leave it alone" do string = 'This is あ string' result = "This is あ string" result = result.dup.force_encoding('UTF-8') expect(Mail::Encodings.decode_encode(string, :decode)).to eq result end end describe "encoding" do it "should encode a string into Base64" do string = "This is あ string" result = '=?UTF-8?B?VGhpcyBpcyDjgYIgc3RyaW5n?=' result = result.dup.force_encoding('UTF-8') expect(Mail::Encodings.decode_encode(string, :encode)).to eq result end it "should leave a string that doesn't need encoding alone" do string = 'This is a string' result = "This is a string" result = result.dup.force_encoding('UTF-8') expect(Mail::Encodings.decode_encode(string, :encode)).to eq result end end describe "unquote and convert to" do it "should unquote quoted printable and convert to utf-8" do a ="=?ISO-8859-1?Q?[166417]_Bekr=E6ftelse_fra_Rejsefeber?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "[166417] Bekr\303\246ftelse fra Rejsefeber" end it "should unquote base64 and convert to utf-8" do a ="=?ISO-8859-1?B?WzE2NjQxN10gQmVrcuZmdGVsc2UgZnJhIFJlanNlZmViZXI=?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "[166417] Bekr\303\246ftelse fra Rejsefeber" end it "should handle no charset" do a ="[166417]_Bekr=E6ftelse_fra_Rejsefeber" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "[166417]_Bekr=E6ftelse_fra_Rejsefeber" end it "should unquote multiple lines" do a ="=?utf-8?q?Re=3A_=5B12=5D_=23137=3A_Inkonsistente_verwendung_von_=22Hin?==?utf-8?b?enVmw7xnZW4i?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "Re: [12] #137: Inkonsistente verwendung von \"Hinzuf\303\274gen\"" end it "should unquote a string in the middle of the text" do a ="Re: Photos =?ISO-8859-1?Q?Brosch=FCre_Rand?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "Re: Photos Brosch\303\274re Rand" end it "should unquote and change to an ISO encoding if we really want" do a = "=?ISO-8859-1?Q?Brosch=FCre_Rand?=" b = Mail::Encodings.unquote_and_convert_to(a, 'iso-8859-1') expected = "Brosch\374re Rand" expected = expected.dup.force_encoding('iso-8859-1') if expected.respond_to?(:force_encoding) expect(b).to eq expected end it "should unquote Shift_JIS QP with trailing =" do a = "=?Shift_JIS?Q?=93=FA=96{=8C=EA=?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "日本語" end it "handles Windows 1252 QP encoding" do # TODO: JRuby 1.7.0 has an encoding issue https://jira.codehaus.org/browse/JRUBY-6999 skip if defined?(JRUBY_VERSION) && JRUBY_VERSION >= '1.7.0' a = "=?WINDOWS-1252?Q?simple_=96_dash_=96_?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "simple – dash – " end it "should recognize iso646-us" do decoded = Mail::Encodings.value_decode "[kj] =?ISO646-US?Q?Re:_[kj]_[KJ]_Money_is_not_our_god_should_?=\r\n =?ISO646-US?Q?be_played_on_US_Tour...+_Elys=3Fe_Montmartre?=" expect(decoded).to eq("[kj] Re: [kj] [KJ] Money is not our god should be played on US Tour...+ Elys?e Montmartre") end it "should unquote multiple strings in the middle of the text" do a = "=?Shift_JIS?Q?=93=FA=96{=8C=EA=?= , =?Shift_JIS?Q?=93=FA=96{=8C=EA=?= " b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "日本語 , 日本語 " end it "should handle multiline quoted headers with mixed content" do a = "=?iso-2022-jp?B?GyRCP3AwQxsoQg==?=2=?iso-2022-jp?B?GyRCIiobKEI=?= =?iso-2022-jp?B?GyRCOkc2YUxnPj4kcj5+JGsySCQsJFskSCRzJEk4K0V2GyhC?= =?iso-2022-jp?B?GyRCJD8kaSRKJCQhKjxkJDckJCQzJEgkRyQ5JE0hI0Z8GyhC?= =?iso-2022-jp?B?GyRCS1wkTiQkJCQkSCQzJG0hIiRvJFMkNSRTJE5AJDMmGyhC?= =?iso-2022-jp?B?GyRCJCw8OiRvJGwkRCREJCIkazg9Ol8hIiRKJHMkSCQrGyhC?= =?iso-2022-jp?B?GyRCOGVAJCRLO0QkNSRNJFAhIkxeQk4kSiQkISokSCReGyhC?= =?iso-2022-jp?B?GyRCJF4kTztXJCYkTiRAISMbKEI=?=" b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "瑞庵2→最近門松を飾る家がほとんど見当たらない!寂しいことですね。日本のいいところ、わびさびの世界が失われつつある現在、なんとか後世に残さねば、勿体ない!とままは思うのだ。" end it "should handle quoted string with mixed content that have a plain string at the end" do a = 'Der Kunde ist K=?utf-8?B?w7Y=?=nig' b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "Der Kunde ist König" end it "should handle utf_8" do a = 'Der Kunde ist K=?utf_8?B?w7Y=?=nig' b = Mail::Encodings.unquote_and_convert_to(a, 'utf-8') expect(b).to eq "Der Kunde ist König" end end end describe "quoted printable encoding and decoding" do it "should handle underscores in the text" do expected = 'something_with_underscores' expect(Mail::Encodings.get_encoding(:quoted_printable).encode(expected).unpack("M").first).to eq expected end it "should handle underscores in the text" do expected = 'something with_underscores' expect(Mail::Encodings.get_encoding(:quoted_printable).encode(expected).unpack("M").first).to eq expected end it "should keep the underscores in the text" do expected = 'something_with_underscores' encoded = Mail::Encodings.get_encoding(:quoted_printable).encode(expected) expect(Mail::Encodings.get_encoding(:quoted_printable).decode(encoded)).to eq expected end it "should handle a new line in the text" do if 'string'.respond_to?(:force_encoding) expected = "\r\nRe: ol\341".dup.force_encoding('ISO-8859-1').encode('utf-8') else expected = Iconv.conv("UTF-8", "ISO-8859-1", "\r\nRe: ol\341") end encoded = "=?ISO-8859-1?Q?\nRe=3A_ol=E1?=" expect(Mail::Encodings.value_decode(encoded)).to eq expected end it "should handle a question mark in the text" do encoded = "=?iso-8859-1?Q?Hello World?_-_How are you??=" expect(Mail::Encodings.value_decode(encoded)).to eq "Hello World? - How are you?" end end describe "pre encoding non usascii text" do it "should not change an ascii string" do raw = 'mikel@test.lindsaar.net' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq raw end it "should encode a display that contains non usascii" do raw = 'Lindsああr ' encoded = '=?UTF-8?B?TGluZHPjgYLjgYJy?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode a single token that contains non usascii" do raw = '' encoded = Mail::Encodings.encode_non_usascii(raw, 'utf-8') expect(Mail::Encodings.value_decode(encoded)).to eq raw end it "should encode a display that contains non usascii with quotes as no quotes" do raw = '"Lindsああr" ' encoded = '=?UTF-8?B?TGluZHPjgYLjgYJy?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode a display name with us-ascii and non-usascii parts" do raw = 'Mikel Lindsああr ' encoded = 'Mikel =?UTF-8?B?TGluZHPjgYLjgYJy?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode a display name with us-ascii and non-usascii parts ignoring quotes" do raw = '"Mikel Lindsああr" ' encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode a quoted display name with us-ascii and non-usascii that ends with a non-usascii part" do raw = '"Marc André" ' encoded = '=?UTF-8?B?TWFyYyBBbmRyw6k=?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode multiple addresses correctly" do raw = '"Mikel Lindsああr" , "あdあ" ' encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , =?UTF-8?B?44GCZOOBgg==?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode multiple addresses correctly when noninitial address contains non-usascii chars" do raw = '"Mikel Lindr" , "あdあ" ' encoded = 'Mikel Lindr , =?UTF-8?B?44GCZOOBgg==?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode multiple unquoted addresses correctly" do raw = 'Mikel Lindsああr , あdあ ' encoded = 'Mikel =?UTF-8?B?TGluZHPjgYLjgYJy?= , =?UTF-8?B?44GCZOOBgg==?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode multiple unquoted addresses correctly when noninitial address contains non-usascii chars" do raw = 'Mikel Lindsar , あdあ ' encoded = 'Mikel Lindsar , =?UTF-8?B?44GCZOOBgg==?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode multiple un bracketed addresses and groups correctly" do raw = '"Mikel Lindsああr" test1@lindsaar.net, group: "あdあ" test2@lindsaar.net, me@lindsaar.net;' encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= test1@lindsaar.net, group: =?UTF-8?B?44GCZOOBgg==?= test2@lindsaar.net, me@lindsaar.net;' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should correctly match and encode non-usascii letters at the end of a quoted string" do raw = '"Felix Baarß" ' encoded = '=?UTF-8?B?RmVsaXggQmFhcsOf?= ' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end end describe "address encoding" do it "should not do anything to a plain address" do raw = 'mikel@test.lindsaar.net' encoded = 'mikel@test.lindsaar.net' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should encode an address correctly" do raw = '"Mikel Lindsああr" ' encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= ' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should encode multiple addresses correctly" do raw = ['"Mikel Lindsああr" ', '"あdあ" '] encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , =?UTF-8?B?44GCZOOBgg==?= ' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should encode unicode local part" do raw = '"Mikel Lindsああr" tést1@lindsaar.net, group: "あdあ" <ßest2@lindsaar.net>;' encoded = '=?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= =?UTF-8?B?dMOpc3QxQGxpbmRzYWFyLm5ldCw=?= group: =?UTF-8?B?44GCZOOBgg==?= =?UTF-8?B?PMOfZXN0MkBsaW5kc2Fhci5uZXQ+Ow==?=' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should encode emoji local part" do raw = '😛@lindsaar.net' encoded = '=?UTF-8?B?8J+Ym0BsaW5kc2Fhci5uZXQ=?=' expect(Mail::Encodings.encode_non_usascii(raw, 'utf-8')).to eq encoded end it "should handle a single ascii address correctly from a string" do raw = ['"Mikel Lindsaar" '] encoded = '"Mikel Lindsaar" ' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should handle multiple ascii addresses correctly from a string" do raw = 'Mikel Lindsaar , Ada ' encoded = 'Mikel Lindsaar , Ada ' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should handle ascii addresses correctly as an array" do raw = ['Mikel Lindsaar ', 'Ada '] encoded = 'Mikel Lindsaar , Ada ' expect(Mail::Encodings.address_encode(raw, 'utf-8')).to eq encoded end it "should ignore single nil" do expect(Mail::Encodings.address_encode(nil, 'utf-8')).to be_nil end it "should ignore nil in arrays" do expect(Mail::Encodings.address_encode(["aa@bb.com", nil], 'utf-8')).to eq "aa@bb.com" end end describe ".charset_encoder" do class CustomEncoder def encode(str, charset) String.new("#{str}-#{charset}") end end def with_encoder(encoder) old, Mail::Utilities.charset_encoder = Mail::Utilities.charset_encoder, encoder yield ensure Mail::Utilities.charset_encoder = old end it "can use a custom encoder" do with_encoder CustomEncoder.new do expect(Mail::Encodings.value_decode("=?utf-123?Q?xxx?=")).to eq "xxx-utf-123" end end it "uses converter for params" do with_encoder CustomEncoder.new do result = Mail::Encodings.param_decode("'ja'%d0%91%d0%b5%d0%b7%d1%8b%d0%bc%d1%8f%d0%bd%d0%bd%d1%8b%d0%b912.png", 'iso-2022-jp') expect(result).to eq "'ja'Безымянный12.png-iso-2022-jp" end end it "can convert ansi with best effort" do with_encoder Mail::Utilities::BestEffortCharsetEncoder.new do expect(Mail::Encodings.value_decode("=?windows-1258?Q?SV=3A_Spr=F8sm=E5l_om_tilbod?=")).to eq "SV: Sprøsmål om tilbod" end end end describe ".collapse_adjacent_encodings" do def convert(from, to) expect(Mail::Encodings.collapse_adjacent_encodings(from)).to eq to end it "leaves blank intact" do convert " ", [" "] end it "leaves pure unencoded intact" do convert "AB CD EF ?= =? G", ["AB CD EF ?= =? G"] end it "does not modify 1 encoded" do convert "=?iso-2022-jp?B?X=?=", ["=?iso-2022-jp?B?X=?="] end it "splits unencoded and encoded into separate parts" do convert "A=?iso-2022-jp?B?X=?=B", ["A", "=?iso-2022-jp?B?X=?=", "B"] end it "splits adjacent encodings into separate parts" do convert "A=?iso-2022-jp?B?X=?==?iso-2022-jp?B?Y=?=B", ["A", "=?iso-2022-jp?B?X=?=", "=?iso-2022-jp?B?Y=?=", "B"] end it "splits adjacent encodings without unencoded into separate parts" do convert "=?iso-2022-jp?B?X=?==?iso-2022-jp?B?Y=?=", ["=?iso-2022-jp?B?X=?=", "=?iso-2022-jp?B?Y=?="] end it "does not join encodings when separated by unencoded" do convert "A=?iso-2022-jp?B?X=?=B=?iso-2022-jp?B?Y=?=C", ["A", "=?iso-2022-jp?B?X=?=", "B", "=?iso-2022-jp?B?Y=?=", "C"] end it "does not join different encodings" do convert "A=?iso-2022-jp?B?X=?==?utf-8?B?Y=?=B", ["A", "=?iso-2022-jp?B?X=?=", "=?utf-8?B?Y=?=", "B"] end it "does not keep the separator character between two different encodings" do rfc_1342_newline_separators = ["\x0A", "\x20"] rfc_1342_newline_separators.each do |rfc_1342_separator| convert "=?iso-2022-jp?B?X=?=#{rfc_1342_separator}=?utf-8?Q?Y=?=", ["=?iso-2022-jp?B?X=?=", "=?utf-8?Q?Y=?="] end end end describe ".pick_encoding" do it "finds encoding" do expect(Mail::Utilities.pick_encoding("Windows-1252")).to eq Encoding::Windows_1252 end it "uses binary for unfound" do expect(Mail::Utilities.pick_encoding("ISO-Foo")).to eq Encoding::BINARY end end end mail-2.8.1/spec/mail/example_emails_spec.rb000066400000000000000000000427411436372131700206630ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "Test emails" do describe "from RFC2822" do # From RFC 2822: # This could be called a canonical message. It has a single author, # John Doe, a single recipient, Mary Smith, a subject, the date, a # message identifier, and a textual message in the body. it "should handle the basic test email" do mail = read_fixture('emails', 'rfc2822', 'example01.eml') expect(mail.from).to eq ["jdoe@machine.example"] expect(mail.to).to eq ['mary@example.net'] expect(mail.message_id).to eq '1234@local.machine.example' expect(mail.date).to eq ::DateTime.parse('21 Nov 1997 09:55:06 -0600') expect(mail.subject).to eq 'Saying Hello' end # From RFC 2822: # If John's secretary Michael actually sent the message, though John # was the author and replies to this message should go back to him, the # sender field would be used: it "should handle the sender test email" do mail = read_fixture('emails', 'rfc2822', 'example02.eml') expect(mail.from).to eq ['jdoe@machine.example'] expect(mail.sender).to eq 'mjones@machine.example' expect(mail.to).to eq ['mary@example.net'] expect(mail.message_id).to eq '1234@local.machine.example' expect(mail.date).to eq ::DateTime.parse('21 Nov 1997 09:55:06 -0600') expect(mail.subject).to eq 'Saying Hello' end # From RFC 2822: # This message includes multiple addresses in the destination fields # and also uses several different forms of addresses. # # Note that the display names for Joe Q. Public and Giant; "Big" Box # needed to be enclosed in double-quotes because the former contains # the period and the latter contains both semicolon and double-quote # characters (the double-quote characters appearing as quoted-pair # construct). Conversely, the display name for Who? could appear # without them because the question mark is legal in an atom. Notice # also that jdoe@example.org and boss@nil.test have no display names # associated with them at all, and jdoe@example.org uses the simpler # address form without the angle brackets. # # "Giant; \"Big\" Box" it "should handle multiple recipients test email" do mail = read_fixture('emails', 'rfc2822', 'example03.eml') expect(mail.from).to eq ['john.q.public@example.com'] expect(mail.to).to eq ['mary@x.test', 'jdoe@example.org', 'one@y.test'] expect(mail.cc).to eq ['boss@nil.test', "sysservices@example.net"] expect(mail.message_id).to eq '5678.21-Nov-1997@example.com' expect(mail.date).to eq ::DateTime.parse('1 Jul 2003 10:52:37 +0200') end # From RFC 2822: # A.1.3. Group addresses # In this message, the "To:" field has a single group recipient named A # Group which contains 3 addresses, and a "Cc:" field with an empty # group recipient named Undisclosed recipients. it "should handle group address email test" do mail = read_fixture('emails', 'rfc2822', 'example04.eml') expect(mail.from).to eq ['pete@silly.example'] expect(mail.to).to eq ['c@a.test', 'joe@where.test', 'jdoe@one.test'] expect(mail[:cc].group_names).to eq ['Undisclosed recipients'] expect(mail.message_id).to eq 'testabcd.1234@silly.example' expect(mail.date).to eq ::DateTime.parse('Thu, 13 Feb 1969 23:32:54 -0330') end # From RFC 2822: # A.2. Reply messages # The following is a series of three messages that make up a # conversation thread between John and Mary. John firsts sends a # message to Mary, Mary then replies to John's message, and then John # replies to Mary's reply message. # # Note especially the "Message-ID:", "References:", and "In-Reply-To:" # fields in each message. it "should handle reply messages" do mail = read_fixture('emails', 'rfc2822', 'example05.eml') expect(mail.from).to eq ["jdoe@machine.example"] expect(mail.to).to eq ['mary@example.net'] expect(mail.subject).to eq 'Saying Hello' expect(mail.message_id).to eq '1234@local.machine.example' expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 09:55:06 -0600') end # From RFC 2822: # When sending replies, the Subject field is often retained, though # prepended with "Re: " as described in section 3.6.5. # Note the "Reply-To:" field in the below message. When John replies # to Mary's message above, the reply should go to the address in the # "Reply-To:" field instead of the address in the "From:" field. it "should handle reply message 2" do mail = read_fixture('emails', 'rfc2822', 'example06.eml') expect(mail.from).to eq ['mary@example.net'] expect(mail.to).to eq ['jdoe@machine.example'] expect(mail.reply_to).to eq ['smith@home.example'] expect(mail.subject).to eq 'Re: Saying Hello' expect(mail.message_id).to eq '3456@example.net' expect(mail[:in_reply_to].message_ids).to eq ['1234@local.machine.example'] expect(mail[:references].message_ids).to eq ['1234@local.machine.example'] expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 10:01:10 -0600') end # From RFC 2822: # Final reply message it "should handle the final reply message" do mail = read_fixture('emails', 'rfc2822', 'example07.eml') expect(mail.to).to eq ['smith@home.example'] expect(mail.from).to eq ['jdoe@machine.example'] expect(mail.subject).to eq 'Re: Saying Hello' expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 11:00:00 -0600') expect(mail.message_id).to eq 'abcd.1234@local.machine.tld' expect(mail.in_reply_to).to eq '3456@example.net' expect(mail[:references].message_ids).to eq ['1234@local.machine.example', '3456@example.net'] end # From RFC2822 # A.3. Resent messages # Say that Mary, upon receiving this message, wishes to send a copy of # the message to Jane such that (a) the message would appear to have # come straight from John; (b) if Jane replies to the message, the # reply should go back to John; and (c) all of the original # information, like the date the message was originally sent to Mary, # the message identifier, and the original addressee, is preserved. In # this case, resent fields are prepended to the message: # # If Jane, in turn, wished to resend this message to another person, # she would prepend her own set of resent header fields to the above # and send that. it "should handle the rfc resent example email" do mail = read_fixture('emails', 'rfc2822', 'example08.eml') expect(mail.resent_from).to eq ['mary@example.net'] expect(mail.resent_to).to eq ['j-brown@other.example'] expect(mail.resent_date).to eq ::DateTime.parse('Mon, 24 Nov 1997 14:22:01 -0800') expect(mail.resent_message_id).to eq '78910@example.net' expect(mail.from).to eq ['jdoe@machine.example'] expect(mail.to).to eq ['mary@example.net'] expect(mail.subject).to eq 'Saying Hello' expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 09:55:06 -0600') expect(mail.message_id).to eq '1234@local.machine.example' end # A.4. Messages with trace fields # As messages are sent through the transport system as described in # [RFC2821], trace fields are prepended to the message. The following # is an example of what those trace fields might look like. Note that # there is some folding white space in the first one since these lines # can be long. it "should handle the RFC trace example email" do mail = read_fixture('emails', 'rfc2822', 'example09.eml') expect(mail.received[0].info).to eq 'from x.y.test by example.net via TCP with ESMTP id ABC12345 for ' expect(mail.received[0].date_time).to eq ::DateTime.parse('21 Nov 1997 10:05:43 -0600') expect(mail.received[1].info).to eq 'from machine.example by x.y.test' expect(mail.received[1].date_time).to eq ::DateTime.parse('21 Nov 1997 10:01:22 -0600') expect(mail.from).to eq ['jdoe@machine.example'] expect(mail.to).to eq ['mary@example.net'] expect(mail.subject).to eq 'Saying Hello' expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 09:55:06 -0600') expect(mail.message_id).to eq '1234@local.machine.example' end # A.5. White space, comments, and other oddities # White space, including folding white space, and comments can be # inserted between many of the tokens of fields. Taking the example # from A.1.3, white space and comments can be inserted into all of the # fields. # # The below example is aesthetically displeasing, but perfectly legal. # Note particularly (1) the comments in the "From:" field (including # one that has a ")" character appearing as part of a quoted-pair); (2) # the white space absent after the ":" in the "To:" field as well as # the comment and folding white space after the group name, the special # character (".") in the comment in Chris Jones's address, and the # folding white space before and after "joe@example.org,"; (3) the # multiple and nested comments in the "Cc:" field as well as the # comment immediately following the ":" after "Cc"; (4) the folding # white space (but no comments except at the end) and the missing # seconds in the time of the date field; and (5) the white space before # (but not within) the identifier in the "Message-ID:" field. it "should handle the rfc whitespace test email" do mail = read_fixture('emails', 'rfc2822', 'example10.eml') expect(mail.from).to eq ["pete(his account)@silly.test"] expect(mail.to).to eq ["c@public.example", "joe@example.org", "jdoe@one.test"] expect(mail[:cc].group_names).to eq ['(Empty list)(start)Undisclosed recipients '] expect(mail.date).to eq ::DateTime.parse('Thu, 13 Feb 1969 23:32 -0330') expect(mail.message_id).to eq 'testabcd.1234@silly.test' end # A.6. Obsoleted forms # The following are examples of obsolete (that is, the "MUST NOT # generate") syntactic elements described in section 4 of this # document. # A.6.1. Obsolete addressing # Note in the below example the lack of quotes around Joe Q. Public, # the route that appears in the address for Mary Smith, the two commas # that appear in the "To:" field, and the spaces that appear around the # "." in the jdoe address. it "should handle the rfc obsolete addressing" do mail = read_fixture('emails', 'rfc2822', 'example11.eml') expect(mail[:from].addresses).to eq ['john.q.public@example.com'] expect(mail[:from].to_s).to eq '"Joe Q. Public" ' expect(mail.to).to eq ["@machine.tld:mary@example.net", 'jdoe@test . example'] expect(mail.date).to eq ::DateTime.parse('Tue, 1 Jul 2003 10:52:37 +0200') expect(mail.message_id).to eq '5678.21-Nov-1997@example.com' end # A.6.2. Obsolete dates # # The following message uses an obsolete date format, including a non- # numeric time zone and a two digit year. Note that although the # day-of-week is missing, that is not specific to the obsolete syntax; # it is optional in the current syntax as well. it "should handle the rfc obsolete dates" do mail = read_fixture('emails', 'rfc2822', 'example12.eml') expect(mail.date).to eq ::DateTime.parse('21 Nov 97 09:55:06 GMT') end # A.6.3. Obsolete white space and comments # # White space and comments can appear between many more elements than # in the current syntax. Also, folding lines that are made up entirely # of white space are legal. # # Note especially the second line of the "To:" field. It starts with # two space characters. (Note that "__" represent blank spaces.) # Therefore, it is considered part of the folding as described in # section 4.2. Also, the comments and white space throughout # addresses, dates, and message identifiers are all part of the # obsolete syntax. it "should handle the rfc obsolete whitespace email" do pending mail = read_fixture('emails', 'rfc2822', 'example13.eml') expect(mail.from).to eq 'John Doe ' expect(mail.to).to eq 'Mary Smith ' expect(mail.date).to eq ::DateTime.parse('Fri, 21 Nov 1997 09:55:06 -0600') expect(mail.message_id).to eq '1234@local(blah).machine.example' expect { Mail::Message.new(email) }.not_to raise_error end it "should handle folding subject" do mail = read_fixture('emails', 'rfc2822', 'example14.eml') expect(mail.from).to eq ["atsushi@example.com"] expect(mail.subject).to eq "Re: TEST \tテストテスト" expect(mail.message_id).to eq '0CC5E11ED2C1D@example.com' expect(mail.body.decoded).to eq "Hello\n" end end describe "from the wild" do describe "raw_email_encoded_stack_level_too_deep.eml" do before(:each) do @message = read_fixture('emails', 'mime_emails', 'raw_email_encoded_stack_level_too_deep.eml') end it "should return an 'encoded' version without raising a SystemStackError" do expect { @message.encoded }.not_to raise_error end it "should have two parts" do expect(@message.parts.length).to eq 2 end end describe "sig_only_email.eml" do before(:each) do @message = read_fixture('emails', 'mime_emails', 'sig_only_email.eml') end it "should not error on multiart/signed emails" do expect { @message.encoded }.not_to raise_error end it "should have one attachment called signature.asc" do expect(@message.attachments.length).to eq 1 expect(@message.attachments.first.filename).to eq 'signature.asc' end end describe "handling invalid group lists" do before(:each) do @message = read_fixture('emails', 'error_emails', 'empty_group_lists.eml') end it "should parse the email and encode without crashing" do expect { @message.encoded }.not_to raise_error end it "should return an empty groups list" do expect(@message[:to].group_addresses).to eq [] end end describe "handling multiple references with one of them invalid" do before(:each) do @message = read_fixture('emails', 'error_emails', 'multiple_references_with_one_invalid.eml') end it "should parse the email and encode without crashing" do expect { @message.encoded }.not_to raise_error end it "should return the valid References value" do expect(@message.references).to eq "foo@bar.net" end end describe "handling multiple content-disposition with all of them invalid" do before(:each) do @message = read_fixture('emails', 'error_emails', 'multiple_invalid_content_dispositions.eml') end it "should parse the email and encode without crashing" do expect { @message.encoded }.not_to raise_error end it "should recognise the email as not attachment" do expect(@message.attachment?).to be_falsey expect(@message.has_attachments?).to be_falsey end it "should return one invalid Content-Disposition value" do expect(@message[:content_disposition].errors).to_not be_empty expect(@message.content_disposition).to eq "invalid" end end end describe "empty address lists" do before(:each) do @message = read_fixture('emails', 'error_emails', 'weird_to_header.eml') end it "should parse the email and encode without crashing" do expect { @message.encoded }.not_to raise_error end it "should return an empty groups list" do expect(@message.to).to eq ['user-example@aol.com', 'e-s-a-s-2200@app.ar.com'] end end describe 'RFC6532 UTF8 headers' do before :each do @message = read_fixture('emails', 'rfc6532', 'utf8_headers.eml') end it 'subject' do expect(@message.subject).to eq 'Säying Hello' end it 'from' do expect(@message[:from].to_s).to eq '"Jöhn Doe" ' expect(@message[:from].addresses.first.to_s).to eq 'jdöe@mächine.example' end it 'to' do expect(@message[:to].to_s).to eq '"Märy Smith" ' expect(@message[:to].addresses.first.to_s).to eq 'märy@exämple.net' end end describe "invalid charsets in headers" do it "falls back to ASCII-8BIT for unrecognized charsets" do mail = read_fixture('emails', 'error_emails', 'invalid_subject_characters.eml') expect(mail[:from].display_names).to eq(["Formação Frenetikpolis"]) subject = "Forma\xE7\xE3o FrenetikPolis: Mega Campanha Final Ver\xE3o | Cursos de Setembro" if mail.subject.respond_to?(:encoding) expect(mail.subject.encoding).to eq(Encoding::ASCII_8BIT) subject = subject.dup.force_encoding(Encoding::ASCII_8BIT) end expect(mail.subject).to eq(subject) expect(mail.encoded).to include("From: =?Windows-1252?B?Rm9ybWHn428gRnJlbmV0aWtwb2xpcw==?= ") if subject.respond_to?(:encoding) expect(mail.encoded).to include("Subject: =?UTF-8?Q?Forma=EF=BF=BD=EF=BF=BDo_FrenetikPolis:_Mega_Campanha?=\r\n =?UTF-8?Q?_Final_Ver=EF=BF=BDo_|_Cursos_de_Setembro?=") else expect(mail.encoded).to include("Subject: =?UTF-8?Q?Forma=E7=E3o_FrenetikPolis:_Mega_Campanha_Final?=\r\n =?UTF-8?Q?_Ver=E3o_|_Cursos_de_Setembro?=") end end end end mail-2.8.1/spec/mail/field_list_spec.rb000066400000000000000000000027211436372131700200060ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::FieldList do it "should be able to add new fields" do fl = Mail::FieldList.new fl << Mail::Field.parse("To: mikel@me.com") fl << Mail::Field.parse("From: mikel@me.com") expect(fl.map(&:name)).to eq %w[ From To ] end it "should be able to add new fields in the right order" do fl = Mail::FieldList.new fl << Mail::Field.parse("To: mikel@me.com") fl << Mail::Field.parse("From: mikel@me.com") fl << Mail::Field.parse("Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500") fl << Mail::Field.parse("Return-Path: mikel@me.com") expect(fl.map(&:name)).to eq %w[ Return-Path Received From To ] end it "should add new Received items after the existing ones" do fl = Mail::FieldList.new fl << Mail::Field.parse("To: mikel@me.com") fl << Mail::Field.parse("From: mikel@me.com") fl << Mail::Field.parse("Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500") fl << Mail::Field.parse("Return-Path: mikel@me.com") fl << Mail::Field.parse("Received: from 123.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500") expect(fl[2].field.value).to eq 'from 123.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500' end end mail-2.8.1/spec/mail/field_spec.rb000066400000000000000000000341571436372131700167630ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Field do describe 'parsing' do it "parses full header fields" do field = nil expect { field = Mail::Field.parse('To: Mikel') }.to_not output.to_stderr expect(field.name).to eq 'To' expect(field.value).to eq 'Mikel' if field.value.respond_to?(:encoding) expect(field.value.encoding).to eq Encoding::UTF_8 end expect(field.field).to be_kind_of(Mail::ToField) end it "parses missing whitespace" do field = Mail::Field.parse('To:Bob') expect(field.name).to eq 'To' expect(field.value).to eq 'Bob' end it "parses added inapplicable whitespace" do field = Mail::Field.parse('To : Bob ') expect(field.name).to eq 'To' expect(field.value).to eq 'Bob' end end describe "initialization" do it "raises if instantiating by parsing a full header field" do expect { Mail::Field.new('To: Mikel') }.to raise_error(ArgumentError) end it "instantiates with name and value" do expect(Mail::Field.new('To', 'Mikel').field).to be_kind_of(Mail::ToField) end it "accepts arrays of values" do field = Mail::Field.new("To", ['test1@lindsaar.net', 'Mikel ']) expect(field.addresses).to eq ["test1@lindsaar.net", "test2@lindsaar.net"] end it "accepts omitted values" do expect(Mail::Field.new('To').field).to be_kind_of(Mail::ToField) end it "should match up fields to class names" do structured_fields = %w[ Date From Sender Reply-To To Cc Bcc Message-ID In-Reply-To References Keywords Resent-Date Resent-From Resent-Sender Resent-To Resent-Cc Resent-Bcc Resent-Message-ID Return-Path Received Subject Comments Mime-Version Content-Transfer-Encoding Content-Description Content-Disposition Content-Type ] structured_fields.each do |sf| words = sf.split("-").map { |a| a.capitalize } klass = "#{words.join}Field" expect(Mail::Field.new(sf).field).to be_kind_of(Mail.const_get(klass)) end end %w[ dATE fROM sENDER REPLY-TO TO CC BCC MESSAGE-ID IN-REPLY-TO REFERENCES KEYWORDS resent-date resent-from rESENT-sENDER rESENT-tO rESent-cc resent-bcc reSent-MESSAGE-iD rEtURN-pAtH rEcEiVeD Subject Comments Mime-VeRSIOn cOntenT-transfer-EnCoDiNg Content-Description Content-Disposition cOnTENt-TyPe ].each do |sf| words = sf.split("-").map { |a| a.capitalize } klass = Mail.const_get("#{words.join}Field") it "matches #{sf} to #{klass}" do expect(Mail::Field.new(sf).field).to be_kind_of(klass) end end it "should say anything that is not a known field is an optional field" do unstructured_fields = %w[ Too Becc bccc Random X-Mail MySpecialField ] value = '😊' unstructured_fields.each do |sf| raw = "#{sf}: #{value}" raw = raw.dup.force_encoding(Encoding::BINARY) if raw.respond_to?(:force_encoding) field = Mail::Field.parse(raw) expect(field.field).to be_kind_of(Mail::OptionalField) expect(field.name).to eq(sf) expect(field.value).to eq(value) end end it "should return an unstuctured field if the structured field parsing raises an error" do expect(Mail::ToField).to receive(:new).and_raise(Mail::Field::ParseError.new(Mail::ToField, 'To: Bob, ,,, Frank, Smith', "Some reason")) field = Mail::Field.new('To', 'Bob, ,,, Frank, Smith') expect(field.field).to be_kind_of(Mail::UnstructuredField) expect(field.name).to eq 'To' expect(field.value).to eq 'Bob, ,,, Frank, Smith' if field.value.respond_to?(:encoding) expect(field.value.encoding).to eq Encoding::UTF_8 end end it "delegates to_s to its field" do field = Mail::Field.new('To', 'Bob') expect(field.field).to receive(:to_s).once field.to_s end it "delegates missing methods to its field" do field = Mail::Field.new('To', 'Bob') expect(field.field).to receive(:anything_at_all).once field.anything_at_all end it "should respond_to? its own methods and the same methods as its instantiated field class" do field = Mail::Field.new('To', 'Bob') expect(field.respond_to?(:field)).to be_truthy expect(field.field).to receive(:"respond_to?").once field.respond_to?(:addresses) end it "should change its type if you change the name" do field = Mail::Field.new('To', 'mikel@me.com') expect(field.field).to be_kind_of(Mail::ToField) field.value = "bob@me.com" expect(field.field).to be_kind_of(Mail::ToField) end it "should create a field without trying to parse if given a symbol" do field = Mail::Field.new('Message-ID') expect(field.field).to be_kind_of(Mail::MessageIdField) end it "should inherit charset" do charset = 'iso-2022-jp' field = Mail::Field.new('Subject', 'こんにちは', charset) expect(field.charset).to eq charset end end describe "error handling" do it "should populate the errors array if it finds a field it can't deal with" do field = Mail::Field.new('Content-Transfer-Encoding', '8@bit') expect(field.field.errors.size).to eq 1 expect(field.field.errors[0][0]).to eq 'Content-Transfer-Encoding' expect(field.field.errors[0][1]).to eq '8@bit' expect(field.field.errors[0][2].to_s).to match(/ContentTransferEncodingElement can not parse |17-bit|/) end end describe "helper methods" do it "should reply if it is responsible for a field name as a capitalized string - structured field" do field = Mail::Field.new('To', 'mikel@test.lindsaar.net') expect(field.responsible_for?("To")).to be_truthy end it "should reply if it is responsible for a field as a lower case string - structured field" do field = Mail::Field.new('To', 'mikel@test.lindsaar.net') expect(field.responsible_for?("to")).to be_truthy end it "should reply if it is responsible for a field as a symbol - structured field" do field = Mail::Field.new('To', 'mikel@test.lindsaar.net') expect(field.responsible_for?(:to)).to be_truthy end it "should say it is the \"same\" as another if their field types match" do expect(Mail::Field.new('To', 'mikel').same(Mail::Field.new('To', 'bob'))).to be_truthy end it "should say it is not the \"same\" as another if their field types don't match" do expect(Mail::Field.new('To', 'mikel').same(Mail::Field.new('From', 'mikel'))).to be_falsey end it "should say it is not the \"same\" as nil" do expect(Mail::Field.new('To', 'mikel').same(nil)).to be_falsey end it "should say it is == to another if their field and names match" do expect(Mail::Field.new('To', 'mikel')).to eq(Mail::Field.new('To', 'mikel')) end it "should say it is not == to another if their field names do not match" do expect(Mail::Field.new('From', 'mikel')).not_to eq(Mail::Field.new('To', 'bob')) end it "should say it is not == to another if their field names match, but not their values" do expect(Mail::Field.new('To', 'mikel')).not_to eq(Mail::Field.new('To', 'bob')) end it "should say it is not == to nil" do expect(Mail::Field.new('From', 'mikel')).not_to eq(nil) end it "should sort according to the field order" do list = [Mail::Field.new('To', 'mikel'), Mail::Field.new('Return-Path', 'bob')] expect(list.sort[0].name).to eq "Return-Path" end end describe 'user defined fields' do it "should say it is the \"same\" as another if their field names match" do expect(Mail::Field.new('X-Foo', 'mikel').same(Mail::Field.new('X-Foo', 'bob'))).to be_truthy end it "should say it is not == to another if their field names do not match" do expect(Mail::Field.new('X-Foo', 'mikel')).not_to eq(Mail::Field.new('X-Bar', 'bob')) end end describe "passing an encoding" do it "should allow you to send in unencoded strings to fields and encode them" do subject = Mail::SubjectField.new("This is あ string", 'utf-8') expect(subject.encoded).to eq "Subject: =?UTF-8?Q?This_is_=E3=81=82_string?=\r\n" expect(subject.decoded).to eq "This is あ string" end it "should allow you to send in unencoded strings to address fields and encode them" do to = Mail::ToField.new('"Mikel Lindsああr" ', 'utf-8') expect(to.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= \r\n" end it "should allow you to send in unencoded strings without quotes to address fields and encode them" do to = Mail::ToField.new('Mikel Lindsああr ', 'utf-8') expect(to.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= \r\n" end it "should allow you to send in unencoded strings to address fields and encode them" do to = Mail::ToField.new("あdあ ", 'utf-8') expect(to.encoded).to eq "To: =?UTF-8?B?44GCZOOBgg==?= \r\n" end it "should allow you to send in multiple unencoded strings to address fields and encode them" do to = Mail::ToField.new(["Mikel Lindsああr ", "あdあ "], 'utf-8') expect(to.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" end it "should allow you to send in multiple unencoded strings to any address field" do mail = Mail.new mail.charset = 'utf-8' array = ["Mikel Lindsああr ", "あdあ "] field = Mail::ToField.new(array, 'utf-8') expect(field.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" field = Mail::FromField.new(array, 'utf-8') expect(field.encoded).to eq "From: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" field = Mail::CcField.new(array, 'utf-8') expect(field.encoded).to eq "Cc: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" field = Mail::ReplyToField.new(array, 'utf-8') expect(field.encoded).to eq "Reply-To: =?UTF-8?B?TWlrZWwgTGluZHPjgYLjgYJy?= , \r\n\s=?UTF-8?B?44GCZOOBgg==?= \r\n" end it "should allow an encoded value in the Subject field and decode it automatically (issue 44)" do subject = Mail::SubjectField.new("=?ISO-8859-1?Q?2_=FAlt?=", 'utf-8') expect(subject.decoded).to eq "2 últ" end it "should allow you to encoded text in the middle (issue 44)" do subject = Mail::SubjectField.new("ma=?ISO-8859-1?Q?=F1ana?=", 'utf-8') expect(subject.decoded).to eq "mañana" end it "more tolerable to encoding definitions, ISO (issue 120)" do subject = Mail::SubjectField.new("ma=?ISO88591?Q?=F1ana?=", 'utf-8') expect(subject.decoded).to eq "mañana" end it "more tolerable to encoding definitions, ISO-long (issue 120)" do # TODO: JRuby 1.7.0 has an encoding issue https://jira.codehaus.org/browse/JRUBY-6999 skip if defined?(JRUBY_VERSION) && JRUBY_VERSION >= '1.7.0' subject = Mail::SubjectField.new("=?iso2022jp?B?SEVBUlQbJEIkSiQ0TyJNbRsoQg?=", 'utf-8') expect(subject.decoded).to eq "HEARTなご連絡" end it "more tolerable to encoding definitions, UTF (issue 120)" do to = Mail::ToField.new("=?utf-8?B?44GCZOOBgg==?= ", 'utf-8') expect(to.decoded).to eq "\"あdあ\" " expect(to.encoded).to eq "To: =?utf-8?B?44GCZOOBgg==?= \r\n" end it "more tolerable to encoding definitions, ISO (issue 120)" do subject = Mail::SubjectField.new("=?UTF-8?B?UmU6IHRlc3QgZW52w61vIG1lbnNhamUgY29u?=", 'utf-8') expect(subject.decoded).to eq "Re: test envío mensaje con" end it "more tolerable to encoding definitions, Windows (issue 120)" do # TODO: JRuby 1.7.0 has an encoding issue https://jira.codehaus.org/browse/JRUBY-6999 skip if defined?(JRUBY_VERSION) && JRUBY_VERSION >= '1.7.0' subject = Mail::SubjectField.new("=?Windows1252?Q?It=92s_a_test=3F?=", 'utf-8') expect(subject.decoded).to eq "It’s a test?" end it "should support ascii encoded utf-8 subjects" do s = "=?utf-8?Q?simp?= =?utf-8?Q?le_=E2=80=93_dash_=E2=80=93_?=" subject = Mail::SubjectField.new(s, 'utf-8') expect(subject.decoded).to eq("simple – dash – ") end it "should support ascii encoded windows subjects" do # TODO: JRuby 1.7.0 has an encoding issue https://jira.codehaus.org/browse/JRUBY-6999 skip if defined?(JRUBY_VERSION) && JRUBY_VERSION >= '1.7.0' s = "=?WINDOWS-1252?Q?simp?= =?WINDOWS-1252?Q?le_=96_dash_=96_?=" subject = Mail::SubjectField.new(s, "UTF-8") expect(subject.decoded).to eq("simple – dash – ") end end describe "value" do let(:original) { { :template => "t1" } } subject { Mail::Field.new("name", original) } context "parsed" do it "returns parsed value" do expect(subject.value).to eq(original.to_s) end end context "unparsed" do it "returns origin unparsed value" do expect(subject.unparsed_value).to eq(original) end end end describe Mail::Field::ParseError do it "should be structured" do error = nil begin Mail::DateTimeElement.new("invalid") rescue Mail::Field::ParseError => e error = e end expect(error).not_to be_nil expect(error.element).to eq Mail::DateTimeElement expect(error.value).to eq "invalid" expect(error.reason).not_to be_nil end end end mail-2.8.1/spec/mail/fields/000077500000000000000000000000001436372131700155755ustar00rootroot00000000000000mail-2.8.1/spec/mail/fields/address_container_spec.rb000066400000000000000000000013451436372131700226260ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe 'AddressContainer' do it "should allow you to append an address to an address field result" do m = Mail.new("To: mikel@test.lindsaar.net") expect(m.to).to eq ['mikel@test.lindsaar.net'] m.to << 'bob@test.lindsaar.net' expect(m.to).to eq ['mikel@test.lindsaar.net', 'bob@test.lindsaar.net'] end it "should handle complex addresses correctly" do m = Mail.new("From: mikel@test.lindsaar.net") expect(m.from).to eq ['mikel@test.lindsaar.net'] m.from << '"Ada Lindsaar" , bob@test.lindsaar.net' expect(m.from).to eq ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net', 'bob@test.lindsaar.net'] end end mail-2.8.1/spec/mail/fields/bcc_field_spec.rb000066400000000000000000000076261436372131700210410ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::BccField do # The "Bcc:" field (where the "Bcc" means "Blind Carbon Copy") contains # addresses of recipients of the message whose addresses are not to be # revealed to other recipients of the message. There are three ways in # which the "Bcc:" field is used. In the first case, when a message # containing a "Bcc:" field is prepared to be sent, the "Bcc:" line is # removed even though all of the recipients (including those specified # in the "Bcc:" field) are sent a copy of the message. In the second # case, recipients specified in the "To:" and "Cc:" lines each are sent # a copy of the message with the "Bcc:" line removed as above, but the # recipients on the "Bcc:" line get a separate copy of the message # containing a "Bcc:" line. (When there are multiple recipient # addresses in the "Bcc:" field, some implementations actually send a # separate copy of the message to each recipient with a "Bcc:" # containing only the address of that particular recipient.) Finally, # since a "Bcc:" field may contain no addresses, a "Bcc:" field can be # sent without any addresses indicating to the recipients that blind # copies were sent to someone. Which method to use with "Bcc:" fields # is implementation dependent, but refer to the "Security # Considerations" section of this document for a discussion of each. describe "initialization" do it "should initialize" do expect { Mail::BccField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::BccField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Bcc' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::BccField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::BccField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::BccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::BccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return nothing by default on encoded as Bcc should not be in the mail" do t = Mail::BccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "" end it "should return the encoded line for one address when requested to include in headers" do t = Mail::BccField.new('sam@me.com') t.include_in_headers = true expect(t.encoded).to eq "Bcc: sam@me.com\r\n" end it "should return the encoded line when requested to include in headers" do t = Mail::BccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') t.include_in_headers = true expect(t.encoded).to eq "Bcc: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end it "should return the decoded line" do t = Mail::BccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.decoded).to eq "sam@me.com, my_group: mikel@me.com, bob@you.com;" end end end mail-2.8.1/spec/mail/fields/cc_field_spec.rb000066400000000000000000000046611436372131700206730ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # The "Cc:" field (where the "Cc" means "Carbon Copy" in the sense of # making a copy on a typewriter using carbon paper) contains the # addresses of others who are to receive the message, though the # content of the message may not be directed at them. describe Mail::CcField do describe "initialization" do it "should initialize" do expect { Mail::CcField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::CcField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Cc' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::CcField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::CcField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::CcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::CcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line for one address" do t = Mail::CcField.new('sam@me.com') expect(t.encoded).to eq "Cc: sam@me.com\r\n" end it "should return the encoded line" do t = Mail::CcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Cc: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end it "should return the decoded line" do t = Mail::CcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.decoded).to eq "sam@me.com, my_group: mikel@me.com, bob@you.com;" end end end mail-2.8.1/spec/mail/fields/comments_field_spec.rb000066400000000000000000000007471436372131700221340ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::CommentsField do # # comments = "Comments:" unstructured CRLF it "should initialize" do expect { Mail::CommentsField.new("this is a comment") }.not_to raise_error end it "should accept a string with the field name" do t = Mail::CommentsField.new('this is a comment') expect(t.name).to eq 'Comments' expect(t.value).to eq 'this is a comment' end end mail-2.8.1/spec/mail/fields/common_address_spec.rb000066400000000000000000000254341436372131700221410ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::CommonAddressField do describe "address handling" do it "should give the addresses it is going to" do field = Mail::ToField.new("test1@lindsaar.net") expect(field.addresses.first).to eq "test1@lindsaar.net" end it "should split up the address list into individual addresses" do field = Mail::ToField.new("test1@lindsaar.net, test2@lindsaar.net") expect(field.addresses).to eq ["test1@lindsaar.net", "test2@lindsaar.net"] end it "should give the formatted addresses" do field = Mail::ToField.new("Mikel , Bob ") expect(field.formatted).to eq ["Mikel ", "Bob "] end it "should give the display names" do field = Mail::ToField.new("Mikel , Bob ") expect(field.display_names).to eq ["Mikel", "Bob"] end it "should give the actual address objects" do field = Mail::ToField.new("Mikel , Bob ") field.addrs.each do |addr| expect(addr.class).to eq Mail::Address end end it "should handle groups as well" do field = Mail::ToField.new("test1@lindsaar.net, group: test2@lindsaar.net, me@lindsaar.net;") expect(field.addresses).to eq ["test1@lindsaar.net", "test2@lindsaar.net", "me@lindsaar.net"] end it "should provide a list of groups" do field = Mail::ToField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.group_names).to eq ["My Group"] end it "should provide a list of addresses per group" do field = Mail::ToField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.groups["My Group"].length).to eq 2 expect(field.groups["My Group"].first.to_s).to eq 'test2@lindsaar.net' expect(field.groups["My Group"].last.to_s).to eq 'me@lindsaar.net' end it "should provide a list of addresses that are just in the groups" do field = Mail::ToField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.group_addresses).to eq ['test2@lindsaar.net', 'me@lindsaar.net'] end describe ".value=" do it "should handle initializing as an empty string" do field = Mail::ToField.new("") expect(field.addresses).to eq [] field.value = 'mikel@test.lindsaar.net' expect(field.addresses).to eq ['mikel@test.lindsaar.net'] end it "should encode to an empty string if it has no addresses or groups" do field = Mail::ToField.new("") expect(field.encoded).to eq '' field.value = 'mikel@test.lindsaar.net' expect(field.encoded).to eq "To: mikel@test.lindsaar.net\r\n" end context "a unquoted multi-byte address is given" do let(:given_value) { 'みける ' } it "should allow you to set an unquoted, multi-byte address value after initialization" do expected_result = "To: =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("") field.value = given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("") field.value = given_value expect(field.value).to eq given_value end end context "a quoted multi-byte address is given" do let(:given_value) { '"みける" ' } it "should allow you to set an quoted, multi-byte address value after initialization" do expected_result = "To: =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("") field.value = given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("") field.value = given_value expect(field.value).to eq given_value end end end describe ".<<" do it "should allow you to append an address" do field = Mail::ToField.new("") field << 'mikel@test.lindsaar.net' expect(field.addresses).to eq ["mikel@test.lindsaar.net"] end context "a unquoted multi-byte address is given" do let(:given_value) { 'みける ' } context "initialized with an empty string" do it "should allow you to append an unquoted, multi-byte address value" do expected_result = "To: =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("") field << given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("") field << given_value expect(field.value).to eq given_value end end context "initialized with an us-ascii address" do it "should allow you to append a quoted, multi-byte address value" do expected_result = "To: Mikel , \r\n =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("Mikel ") field << given_value expect(field.encoded).to eq expected_result end end context "initialized with an multi-byte address" do it "should allow you to append a quoted, multi-byte address value" do expected_result = "To: =?UTF-8?B?44Of44Kx44Or?= , \r\n =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("ミケル ") field << given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("ミケル ") field << given_value expect(field.value).to eq ["ミケル ", given_value].join(', ') end end end context "a quoted multi-byte address is given" do let(:given_value) { '"みける" ' } context "initialized with an empty string" do it "should allow you to append a quoted, multi-byte address value" do expected_result = "To: =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("") field << given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("") field << given_value expect(field.value).to eq given_value end end context "initialized with an us-ascii address" do it "should allow you to append a quoted, multi-byte address value" do expected_result = "To: Mikel , \r\n =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("Mikel ") field << given_value expect(field.encoded).to eq expected_result end end context "initialized with an multi-byte address" do it "should allow you to append a quoted, multi-byte address value" do expected_result = "To: =?UTF-8?B?44Of44Kx44Or?= , \r\n =?UTF-8?B?44G/44GR44KL?= \r\n" field = Mail::ToField.new("ミケル ") field << given_value expect(field.encoded).to eq expected_result end it "should keep the given value" do field = Mail::ToField.new("ミケル ") field << given_value expect(field.value).to eq ["ミケル ", given_value].join(', ') end end end end it "should preserve the display name" do field = Mail::ToField.new('"Mikel Lindsaar" ') expect(field.display_names).to eq ["Mikel Lindsaar"] end it "should handle multiple addresses" do field = Mail::ToField.new(['test1@lindsaar.net', 'Mikel ']) expect(field.addresses).to eq ['test1@lindsaar.net', 'test2@lindsaar.net'] end it "should handle missing display names with an angle address" do field = Mail::ToField.new('') expect(field.encoded).to eq "To: mikel@test.lindsaar.net\r\n" end it "should handle empty display names with an angle address" do field = Mail::ToField.new('"" ') expect(field.encoded).to eq "To: mikel@test.lindsaar.net\r\n" end end describe "encoding and decoding fields" do it "should allow us to encode an address field" do field = Mail::ToField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.encoded).to eq "To: test1@lindsaar.net, \r\n\sMy Group: test2@lindsaar.net, \r\n\sme@lindsaar.net;\r\n" end it "should allow us to encode a simple address field" do field = Mail::ToField.new("test1@lindsaar.net") expect(field.encoded).to eq "To: test1@lindsaar.net\r\n" end it "should allow us to encode an address field" do field = Mail::CcField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.encoded).to eq "Cc: test1@lindsaar.net, \r\n\sMy Group: test2@lindsaar.net, \r\n\sme@lindsaar.net;\r\n" end it "should allow us to decode an address field" do field = Mail::ToField.new("test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;") expect(field.decoded).to eq "test1@lindsaar.net, My Group: test2@lindsaar.net, me@lindsaar.net;" end it "should allow us to decode a non ascii address field" do field = Mail::ToField.new("=?UTF-8?B?44G/44GR44KL?= ") expect(field.decoded).to eq '"みける" ' end it "should allow us to decode a non ascii address field" do field = Mail::ToField.new("=?UTF-8?B?44G/44GR44KL?= , =?UTF-8?B?44G/44GR44KL?= ") expect(field.decoded).to eq '"みける" , "みける" ' end end it "should yield each address object in turn" do field = Mail::ToField.new("test1@lindsaar.net, test2@lindsaar.net, me@lindsaar.net") addresses = [] field.each do |address| addresses << address.address end expect(addresses).to eq ["test1@lindsaar.net", "test2@lindsaar.net", "me@lindsaar.net"] end end mail-2.8.1/spec/mail/fields/common_date_spec.rb000066400000000000000000000013651436372131700214260ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::CommonDateField do describe "encoding and decoding fields" do it "should allow us to encode an date field" do field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT') expect(field.encoded).to eq "Date: Wed, 12 Aug 2009 00:00:02 +0000\r\n" end it "should allow us to encode an resent date field" do field = Mail::ResentDateField.new('12 Aug 2009 00:00:02 GMT') expect(field.encoded).to eq "Resent-Date: Wed, 12 Aug 2009 00:00:02 +0000\r\n" end it "should allow us to decode an address field" do field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT') expect(field.decoded).to eq "Wed, 12 Aug 2009 00:00:02 +0000" end end end mail-2.8.1/spec/mail/fields/common_field_spec.rb000066400000000000000000000053311436372131700215710ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' require 'mail/fields/common_field' describe Mail::CommonField do describe "multi-charset support" do it "should return '' on to_s if there is no value" do expect(Mail::SubjectField.new(nil).to_s).to eq '' end it "should leave ascii alone" do field = Mail::SubjectField.new("This is a test") expect(field.encoded).to eq "Subject: This is a test\r\n" expect(field.decoded).to eq "This is a test" end it "should encode a utf-8 string as utf-8 quoted printable" do value = "かきくけこ" value = value.dup.force_encoding('UTF-8') result = "Subject: =?UTF-8?Q?=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n" field = Mail::SubjectField.new(value) expect(field.encoded).to eq result expect(field.decoded).to eq value expect(field.value).to eq value end it "should wrap an encoded at 60 characters" do value = "かきくけこ かきくけこ かきくけこ かきくけこ かきくけこ かきくけこ かきくけこ かきくけこ かきくけこ" value = value.dup.force_encoding('UTF-8') result = "Subject: =?UTF-8?Q?=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n\s=?UTF-8?Q?_=E3=81=8B=E3=81=8D=E3=81=8F=E3=81=91=E3=81=93?=\r\n" field = Mail::SubjectField.new(value) expect(field.encoded).to eq result expect(field.decoded).to eq value expect(field.value).to eq value end it "should handle charsets in assigned addresses" do value = '"かきくけこ" ' value = value.dup.force_encoding('UTF-8') result = "From: =?UTF-8?B?44GL44GN44GP44GR44GT?= \r\n" field = Mail::FromField.new(value) expect(field.encoded).to eq result expect(field.decoded).to eq value end end describe "with content that looks like the field name" do it "does not strip from start" do field = Mail::SubjectField.new("Subject: for your approval") expect(field.decoded).to eq("Subject: for your approval") end it "does not strip from middle" do field = Mail::SubjectField.new("for your approval subject: xyz") expect(field.decoded).to eq("for your approval subject: xyz") end end end mail-2.8.1/spec/mail/fields/common_message_id_spec.rb000066400000000000000000000020231436372131700226010ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' require 'mail/fields/common_message_id_field' describe Mail::CommonMessageIdField do describe "encoding and decoding fields" do it "should allow us to encode a message id field" do field = Mail::MessageIdField.new('') expect(field.encoded).to eq "Message-ID: \r\n" end it "should allow us to encode a message id field" do field = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(field.encoded).to eq "Message-ID: <1234@test.lindsaar.net>\r\n" end it "should allow us to encode an in reply to field" do field = Mail::InReplyToField.new('<1234@test.lindsaar.net>') expect(field.encoded).to eq "In-Reply-To: <1234@test.lindsaar.net>\r\n" end it "should allow us to decode a message id field" do field = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(field.decoded).to eq "<1234@test.lindsaar.net>" end end end mail-2.8.1/spec/mail/fields/content_description_field_spec.rb000066400000000000000000000021411436372131700243520ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ContentDescriptionField do # Content-Description Header Field # # The ability to associate some descriptive information with a given # body is often desirable. For example, it may be useful to mark an # "image" body as "a picture of the Space Shuttle Endeavor." Such text # may be placed in the Content-Description header field. This header # field is always optional. # # description := "Content-Description" ":" *text # # The description is presumed to be given in the US-ASCII character # set, although the mechanism specified in RFC 2047 may be used for # non-US-ASCII Content-Description values. # describe "initialization" do it "should initialize" do expect { Mail::ContentDescriptionField.new("This is a description") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ContentDescriptionField.new('This is a description') expect(t.name).to eq 'Content-Description' expect(t.value).to eq 'This is a description' end end end mail-2.8.1/spec/mail/fields/content_disposition_field_spec.rb000066400000000000000000000101121436372131700243700ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::ContentDispositionField do describe "initialization" do it "should initialize" do expect { Mail::ContentDispositionField.new("attachment; filename=File") }.not_to raise_error end it "should accept a string without the field name" do c = Mail::ContentDispositionField.new('attachment; filename=File') expect(c.name).to eq 'Content-Disposition' expect(c.value).to eq 'attachment; filename=File' end it "should accept a nil value and generate a disposition type" do c = Mail::ContentDispositionField.new(nil) expect(c.name).to eq 'Content-Disposition' expect(c.value).not_to be_nil end it "should render encoded" do c = Mail::ContentDispositionField.new('attachment; filename=File') expect(c.encoded).to eq "Content-Disposition: attachment;\r\n\sfilename=File\r\n" end it "should render encoded for inline" do c = Mail::ContentDispositionField.new('inline') expect(c.encoded).to eq "Content-Disposition: inline\r\n" end it "should wrap a filename in double quotation marks only if the filename contains spaces and does not already have double quotation marks" do c = Mail::ContentDispositionField.new('attachment; filename=This is a bad filename.txt') expect(c.value).to eq 'attachment; filename="This is a bad filename.txt"' c = Mail::ContentDispositionField.new('attachment; filename=some.jpg') expect(c.value).to eq 'attachment; filename=some.jpg' c = Mail::ContentDispositionField.new('attachment; filename="Bad filename but at least it is wrapped in quotes.txt"') expect(c.value).to eq 'attachment; filename="Bad filename but at least it is wrapped in quotes.txt"' end it "should render decoded" do c = Mail::ContentDispositionField.new('attachment; filename=File') expect(c.decoded).to eq 'attachment; filename=File' end it "should render decoded inline" do c = Mail::ContentDispositionField.new('inline') expect(c.decoded).to eq 'inline' end it "should handle upper and mixed case INLINE and AttachMent" do c = Mail::ContentDispositionField.new('INLINE') expect(c.decoded).to eq 'inline' c = Mail::ContentDispositionField.new('AttachMent') expect(c.decoded).to eq 'attachment' end end describe "instance methods" do it "should give its disposition type" do c = Mail::ContentDispositionField.new('attachment; filename=File') expect(c.disposition_type).to eq 'attachment' expect(c.parameters).to eql({"filename" => 'File'}) end # see spec/fixtures/trec_2005_corpus/missing_content_disposition.eml it "should accept a blank disposition type" do c = Mail::ContentDispositionField.new('') expect(c.disposition_type).not_to be_nil end it "handles nil value" do c = Mail::ContentDispositionField.new(nil, 'utf-8') expect(c.parameters).to be_a( Mail::ParameterHash ) expect(c.parameters).to be_empty end end describe "finding a filename" do it "should locate a filename if there is a filename" do string = %q{attachment; filename=mikel.jpg} c = Mail::ContentDispositionField.new(string) expect(c.filename).to eq 'mikel.jpg' end it "should locate a name if there is no filename" do string = %q{attachment; name=mikel.jpg} c = Mail::ContentDispositionField.new(string) expect(c.filename).to eq 'mikel.jpg' end it "should return an empty string when filename or name is empty" do string = %q{attachment; filename=""} c = Mail::ContentDispositionField.new(string) expect(c.filename).to eq '' string = %q{attachment; name=""} c = Mail::ContentDispositionField.new(string) expect(c.filename).to eq '' end it "should locate an encoded name as a filename" do string = %q(attachment; name*=ISO-8859-1''Eelanal%FC%FCsi%20p%E4ring.jpg) c = Mail::ContentDispositionField.new(string) expect(c.filename).to eq "Eelanalüüsi päring.jpg" end end end mail-2.8.1/spec/mail/fields/content_id_field_spec.rb000066400000000000000000000075571436372131700224430ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ContentIdField do # Content-ID Header Field # # In constructing a high-level user agent, it may be desirable to allow # one body to make reference to another. Accordingly, bodies may be # labelled using the "Content-ID" header field, which is syntactically # identical to the "Content-ID" header field: # # id := "Content-ID" ":" msg-id # # Like the Content-ID values, Content-ID values must be generated to be # world-unique. # # The Content-ID value may be used for uniquely identifying MIME # entities in several contexts, particularly for caching data # referenced by the message/external-body mechanism. Although the # Content-ID header is generally optional, its use is MANDATORY in # implementations which generate data of the optional MIME media type # "message/external-body". That is, each message/external-body entity # must have a Content-ID field to permit caching of such data. # # It is also worth noting that the Content-ID value has special # semantics in the case of the multipart/alternative media type. This # is explained in the section of RFC 2046 dealing with # multipart/alternative. describe "initialization" do it "should initialize" do expect { Mail::ContentIdField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.name).to eq 'Content-ID' expect(m.value).to eq '<1234@test.lindsaar.net>' expect(m.content_id).to eq '1234@test.lindsaar.net' end it "should accept a nil value and generate a content_id" do m = Mail::ContentIdField.new(nil) expect(m.name).to eq 'Content-ID' expect(m.value).not_to be_nil end it "should allow it to be encoded" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.encoded).to eq "Content-ID: <1234@test.lindsaar.net>\r\n" end it "should allow it to be decoded" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.decoded).to eq "<1234@test.lindsaar.net>" end end describe "ensuring only one message ID" do it "should not accept a string with multiple message IDs but only return the first" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>') expect(m.name).to eq 'Content-ID' expect(m.to_s).to eq '<1234@test.lindsaar.net>' expect(m.content_id).to eq '1234@test.lindsaar.net' end it "should change the message id if given a new message id" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.to_s).to eq '<1234@test.lindsaar.net>' m.value = '<4567@test.lindsaar.net>' expect(m.to_s).to eq '<4567@test.lindsaar.net>' end end describe "instance methods" do it "should provide to_s" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.to_s).to eq '<1234@test.lindsaar.net>' expect(m.content_id.to_s).to eq '1234@test.lindsaar.net' end it "should provide encoded" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m.encoded).to eq "Content-ID: <1234@test.lindsaar.net>\r\n" end it "should respond to :responsible_for?" do m = Mail::ContentIdField.new('<1234@test.lindsaar.net>') expect(m).to respond_to(:responsible_for?) end end describe "generating a message id" do it "should generate a message ID if it has no value" do m = Mail::ContentIdField.new expect(Mail::Utilities.blank?(m.content_id)).not_to be_truthy end it "should generate a random message ID" do m = Mail::ContentIdField.new 1.upto(100) do expect(m.content_id).not_to eq(Mail::ContentIdField.new.content_id) end end end end mail-2.8.1/spec/mail/fields/content_location_field_spec.rb000066400000000000000000000020551436372131700236430ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ContentLocationField do # Content-Location Header Field # describe "initialization" do it "should initialize" do expect { Mail::ContentLocationField.new("Content-Location", "7bit") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ContentLocationField.new('photo.jpg') expect(t.name).to eq 'Content-Location' expect(t.value).to eq 'photo.jpg' end it "should render an encoded field" do t = Mail::ContentLocationField.new('photo.jpg') expect(t.encoded).to eq "Content-Location: photo.jpg\r\n" end it "should render a decoded field" do t = Mail::ContentLocationField.new('photo.jpg') expect(t.decoded).to eq 'photo.jpg' end end describe "parsing the value" do it "should return an encoding string unquoted" do t = Mail::ContentLocationField.new('"A quoted filename.jpg"') expect(t.location).to eq 'A quoted filename.jpg' end end end mail-2.8.1/spec/mail/fields/content_transfer_encoding_field_spec.rb000066400000000000000000000101351436372131700255230ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ContentTransferEncodingField do # Content-Transfer-Encoding Header Field # # Many media types which could be usefully transported via email are # represented, in their "natural" format, as 8bit character or binary # data. Such data cannot be transmitted over some transfer protocols. # For example, RFC 821 (SMTP) restricts mail messages to 7bit US-ASCII # data with lines no longer than 1000 characters including any trailing # CRLF line separator. # # It is necessary, therefore, to define a standard mechanism for # encoding such data into a 7bit short line format. Proper labelling # of unencoded material in less restrictive formats for direct use over # less restrictive transports is also desireable. This document # specifies that such encodings will be indicated by a new "Content- # Transfer-Encoding" header field. This field has not been defined by # any previous standard. # # 6.1. Content-Transfer-Encoding Syntax # # The Content-Transfer-Encoding field's value is a single token # specifying the type of encoding, as enumerated below. Formally: # # encoding := "Content-Transfer-Encoding" ":" mechanism # # mechanism := "7bit" / "8bit" / "binary" / # "quoted-printable" / "base64" / # ietf-token / x-token # # These values are not case sensitive -- Base64 and BASE64 and bAsE64 # are all equivalent. An encoding type of 7BIT requires that the body # # is already in a 7bit mail-ready representation. This is the default # value -- that is, "Content-Transfer-Encoding: 7BIT" is assumed if the # Content-Transfer-Encoding header field is not present. # describe "initialization" do it "should initialize" do expect { Mail::ContentTransferEncodingField.new("7bit") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ContentTransferEncodingField.new('7bit') expect(t.name).to eq 'Content-Transfer-Encoding' expect(t.value).to eq '7bit' end it "should render an encoded field" do t = Mail::ContentTransferEncodingField.new('7bit') expect(t.encoded).to eq "Content-Transfer-Encoding: 7bit\r\n" end it "should render a decoded field" do t = Mail::ContentTransferEncodingField.new('7bit') expect(t.decoded).to eq '7bit' end end describe "parsing the value" do it "should return an encoding string" do ["7bit", "8bit", "binary", 'quoted-printable', "base64"].each do |encoding| t = Mail::ContentTransferEncodingField.new(encoding) expect(t.encoding).to eq encoding end end it "should treat 7bits/7-bit and 8bits/8-bit as 7bit and 8bit" do %w(7bits 7-bit).each do |mechanism| expect(Mail::ContentTransferEncodingField.new(mechanism).encoding).to eq '7bit' end %w(8bits 8-bit).each do |mechanism| expect(Mail::ContentTransferEncodingField.new(mechanism).encoding).to eq '8bit' end end it "should handle any valid 'x-token' value" do t = Mail::ContentTransferEncodingField.new('X-This-is_MY-encoding') expect(t.encoding).to eq 'x-this-is_my-encoding' end it "should handle an x-encoding" do t = Mail::ContentTransferEncodingField.new("x-uuencode") expect(t.encoding).to eq "x-uuencode" end it "should handle an ietf encoding (practically, any token)" do t = Mail::ContentTransferEncodingField.new("ietf-token") expect(t.encoding).to eq "ietf-token" end it "should raise an error on bogus values" do expect { Mail::ContentTransferEncodingField.new("broken@foo") }.to raise_error(Mail::Field::ParseError) end it "should handle an empty content transfer encoding" do t = Mail::ContentTransferEncodingField.new("") expect(t.encoding).to eq "" end it "should handle a hyphen" do t = Mail::ContentTransferEncodingField.new('7-bit') expect(t.decoded).to eq '7bit' t = Mail::ContentTransferEncodingField.new('8-bit') expect(t.decoded).to eq '8bit' end end end mail-2.8.1/spec/mail/fields/content_type_field_spec.rb000066400000000000000000000762571436372131700230330ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ContentTypeField do # Content-Type Header Field # # The purpose of the Content-Type field is to describe the data # contained in the body fully enough that the receiving user agent can # pick an appropriate agent or mechanism to present the data to the # user, or otherwise deal with the data in an appropriate manner. The # value in this field is called a media type. # # HISTORICAL NOTE: The Content-Type header field was first defined in # RFC 1049. RFC 1049 used a simpler and less powerful syntax, but one # that is largely compatible with the mechanism given here. # # The Content-Type header field specifies the nature of the data in the # body of an entity by giving media type and subtype identifiers, and # by providing auxiliary information that may be required for certain # media types. After the media type and subtype names, the remainder # of the header field is simply a set of parameters, specified in an # attribute=value notation. The ordering of parameters is not # significant. # # In general, the top-level media type is used to declare the general # type of data, while the subtype specifies a specific format for that # type of data. Thus, a media type of "image/xyz" is enough to tell a # user agent that the data is an image, even if the user agent has no # knowledge of the specific image format "xyz". Such information can # be used, for example, to decide whether or not to show a user the raw # data from an unrecognized subtype -- such an action might be # reasonable for unrecognized subtypes of text, but not for # unrecognized subtypes of image or audio. For this reason, registered # subtypes of text, image, audio, and video should not contain embedded # information that is really of a different type. Such compound # formats should be represented using the "multipart" or "application" # types. # # Parameters are modifiers of the media subtype, and as such do not # fundamentally affect the nature of the content. The set of # meaningful parameters depends on the media type and subtype. Most # parameters are associated with a single specific subtype. However, a # given top-level media type may define parameters which are applicable # to any subtype of that type. Parameters may be required by their # defining content type or subtype or they may be optional. MIME # implementations must ignore any parameters whose names they do not # recognize. # # For example, the "charset" parameter is applicable to any subtype of # "text", while the "boundary" parameter is required for any subtype of # the "multipart" media type. # # There are NO globally-meaningful parameters that apply to all media # types. Truly global mechanisms are best addressed, in the MIME # model, by the definition of additional Content-* header fields. # # An initial set of seven top-level media types is defined in RFC 2046. # Five of these are discrete types whose content is essentially opaque # as far as MIME processing is concerned. The remaining two are # composite types whose contents require additional handling by MIME # processors. # # This set of top-level media types is intended to be substantially # complete. It is expected that additions to the larger set of # supported types can generally be accomplished by the creation of new # subtypes of these initial types. In the future, more top-level types # may be defined only by a standards-track extension to this standard. # If another top-level type is to be used for any reason, it must be # given a name starting with "X-" to indicate its non-standard status # and to avoid a potential conflict with a future official name. # describe "initialization" do it "should initialize" do expect { Mail::ContentTypeField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do c = Mail::ContentTypeField.new('text/plain') expect(c.name).to eq 'Content-Type' expect(c.value).to eq 'text/plain' end it "should accept a nil value and generate a content_type" do c = Mail::ContentTypeField.new('Content-Type', nil) expect(c.name).to eq 'Content-Type' expect(c.value).not_to be_nil end it "should render encoded" do c = Mail::ContentTypeField.new('text/plain') expect(c.encoded).to eq "Content-Type: text/plain\r\n" end it "should render encoded with parameters" do c = Mail::ContentTypeField.new('text/plain; charset=US-ASCII; format=flowed') expect(c.encoded).to eq %Q{Content-Type: text/plain;\r\n\scharset=US-ASCII;\r\n\sformat=flowed\r\n} end it "should render quoted values encoded" do c = Mail::ContentTypeField.new('text/plain; example="foo bar"') expect(c.encoded).to eq %Q{Content-Type: text/plain;\r\n\sexample="foo bar"\r\n} end it "should render decoded" do c = Mail::ContentTypeField.new('text/plain; charset=US-ASCII; format=flowed') expect(c.decoded).to eq 'text/plain; charset=US-ASCII; format=flowed' end it "should render quoted values decoded" do c = Mail::ContentTypeField.new('text/plain; example="foo bar"') expect(c.decoded).to eq 'text/plain; example="foo bar"' end it "should render " do c = Mail::ContentTypeField.new('message/delivery-status') expect(c.main_type).to eq 'message' expect(c.sub_type).to eq 'delivery-status' end it "should wrap a filename in double quotation marks only if the filename contains spaces and does not already have double quotation marks" do c = Mail::ContentTypeField.new('text/plain; name=This is a bad filename.txt') expect(c.value).to eq 'text/plain; name="This is a bad filename.txt"' c = Mail::ContentTypeField.new('image/jpg; name=some.jpg; size=100') expect(c.value).to eq 'image/jpg; name=some.jpg; size=100' c = Mail::ContentTypeField.new('text/plain; name="Bad filename but at least it is wrapped in quotes.txt"') expect(c.value).to eq 'text/plain; name="Bad filename but at least it is wrapped in quotes.txt"' end it "should only wrap filenames in double quotation marks" do c = Mail::ContentTypeField.new("image/jpg;\r\n\sname=some .jpg\r\n\ssize=100") expect(c.value).to eq %Q{image/jpg;\r\n\sname="some .jpg"\r\n\ssize=100} end end describe "instance methods" do it "should return a content_type" do c = Mail::ContentTypeField.new('text/plain') expect(c.content_type).to eq 'text/plain' end it "should return a content_type for the :string method" do c = Mail::ContentTypeField.new('text/plain') expect(c.string).to eq 'text/plain' end it "should return a main_type" do c = Mail::ContentTypeField.new('text/plain') expect(c.main_type).to eq 'text' end it "should return a sub_type" do c = Mail::ContentTypeField.new('text/plain') expect(c.main_type).to eq 'text' end it "should return a parameter as a hash" do c = Mail::ContentTypeField.new('text/plain; charset=US-ASCII') expect(c.parameters).to eql({"charset" => 'US-ASCII'}) end it "should return multiple parameters as a hash" do c = Mail::ContentTypeField.new('text/plain; charset=US-ASCII; format=flowed') expect(c.parameters).to eql({"charset" => 'US-ASCII', "format" => 'flowed'}) end it "should return boundry parameters" do c = Mail::ContentTypeField.new('multipart/mixed; boundary=Apple-Mail-13-196941151') expect(c.parameters).to eql({"boundary" => 'Apple-Mail-13-196941151'}) end it "should be indifferent with the access" do c = Mail::ContentTypeField.new('multipart/mixed; boundary=Apple') expect(c.parameters[:boundary]).to eq "Apple" expect(c.parameters['boundary']).to eq "Apple" end end describe "class methods" do it "should give back an initialized instance with a unique boundary" do boundary = Mail::ContentTypeField.with_boundary('multipart/mixed') expect(boundary.encoded).to match(%r{Content-Type: multipart/mixed;\r\n\sboundary="--==_mimepart_[\w]+_[\w]+"\r\n}) end it "should give back an initialized instance with different type with a unique boundary" do boundary = Mail::ContentTypeField.with_boundary('multipart/alternative') expect(boundary.encoded).to match(%r{Content-Type: multipart/alternative;\r\n\sboundary="--==_mimepart_[\w]+_[\w]+"\r\n}) end it "should give unique boundaries" do boundary1 = Mail::ContentTypeField.with_boundary('multipart/alternative').parameters['boundary'] 0.upto(250) do boundary2 = Mail::ContentTypeField.with_boundary('multipart/alternative').parameters['boundary'] expect(boundary1).not_to eq(boundary2) end end end describe "Testing a bunch of email Content-Type fields" do it "should handle 'application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3'" do string = %q{application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/octet-stream' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'octet-stream' expect(c.parameters).to eql({'name*' => "iso-2022-jp'ja'01%20Quien%20Te%20Dij%8aat.%20Pitbull.mp3"}) end it "should handle 'application/pdf;'" do string = %q{application/pdf;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/pdf' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'pdf' expect(c.parameters).to eql({}) end it "should handle 'application/pdf; name=\"broken.pdf\"'" do string = %q{application/pdf; name="broken.pdf"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/pdf' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'pdf' expect(c.parameters).to eql({"name" => "broken.pdf"}) end it "should handle 'application/pkcs7-signature;'" do string = %q{application/pkcs7-signature;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/pkcs7-signature' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'pkcs7-signature' expect(c.parameters).to eql({}) end it "should handle 'application/pkcs7-signature; name=smime.p7s'" do string = %q{application/pkcs7-signature; name=smime.p7s} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/pkcs7-signature' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'pkcs7-signature' expect(c.parameters).to eql({"name" => "smime.p7s"}) end it "should handle 'application/x-gzip; NAME=blah.gz'" do string = %q{application/x-gzip; NAME=blah.gz} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'application/x-gzip' expect(c.main_type).to eq 'application' expect(c.sub_type).to eq 'x-gzip' expect(c.parameters).to eql({"NAME" => "blah.gz"}) end it "should handle 'image/jpeg'" do string = %q{image/jpeg} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'image/jpeg' expect(c.main_type).to eq 'image' expect(c.sub_type).to eq 'jpeg' expect(c.parameters).to eql({}) end it "should handle 'image/jpeg'" do string = %q{image/jpeg} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'image/jpeg' expect(c.main_type).to eq 'image' expect(c.sub_type).to eq 'jpeg' expect(c.parameters).to eql({}) end it "should handle 'image/jpeg;'" do string = %q{image/jpeg} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'image/jpeg' expect(c.main_type).to eq 'image' expect(c.sub_type).to eq 'jpeg' expect(c.parameters).to eql({}) end it "should handle 'image/png;'" do string = %q{image/png} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'image/png' expect(c.main_type).to eq 'image' expect(c.sub_type).to eq 'png' expect(c.parameters).to eql({}) end it "should handle 'message/delivery-status'" do string = %q{message/delivery-status} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'message/delivery-status' expect(c.main_type).to eq 'message' expect(c.sub_type).to eq 'delivery-status' expect(c.parameters).to eql({}) end it "should handle 'message/rfc822'" do string = %q{message/rfc822} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'message/rfc822' expect(c.main_type).to eq 'message' expect(c.sub_type).to eq 'rfc822' expect(c.parameters).to eql({}) end it "should handle 'multipart/alternative;'" do string = %q{multipart/alternative;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({}) end it "should handle 'multipart/alternative; boundary=\"----=_NextPart_000_0093_01C81419.EB75E850\"'" do string = %q{multipart/alternative; boundary="----=_NextPart_000_0093_01C81419.EB75E850"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" =>"----=_NextPart_000_0093_01C81419.EB75E850"}) end it "should handle 'multipart/alternative; boundary=----=_NextPart_000_0093_01C81419.EB75E850'" do string = %q{multipart/alternative; boundary="----=_NextPart_000_0093_01C81419.EB75E850"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" =>"----=_NextPart_000_0093_01C81419.EB75E850"}) end it "should handle 'Multipart/Alternative;boundary=MuLtIpArT_BoUnDaRy'" do string = %q{Multipart/Alternative; boundary=MuLtIpArT_BoUnDaRy} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" =>"MuLtIpArT_BoUnDaRy"}) end it "should handle 'Multipart/Alternative;boundary=MuLtIpArT_BoUnDaRy'" do string = %q{Multipart/Alternative;boundary=MuLtIpArT_BoUnDaRy} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" =>"MuLtIpArT_BoUnDaRy"}) end it %(should handle 'multipart/alternative; boundary="----jkhkjgyurlkmn789809";; charset="us-ascii"') do string = %(multipart/alternative; boundary="----jkhkjgyurlkmn789809";; charset="us-ascii") c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.parameters['boundary']).to eq('----jkhkjgyurlkmn789809') end it "should handle 'multipart/mixed'" do string = %q{multipart/mixed} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({}) end it "should handle 'multipart/mixed;'" do string = %q{multipart/mixed;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({}) end it "should handle 'multipart/mixed; boundary=Apple-Mail-13-196941151'" do string = %q{multipart/mixed; boundary=Apple-Mail-13-196941151} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({"boundary" => "Apple-Mail-13-196941151"}) end it "should handle 'multipart/mixed; boundary=mimepart_427e4cb4ca329_133ae40413c81ef'" do string = %q{multipart/mixed; boundary=mimepart_427e4cb4ca329_133ae40413c81ef} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({"boundary" => "mimepart_427e4cb4ca329_133ae40413c81ef"}) end it "should handle 'multipart/report; report-type=delivery-status;'" do string = %q{multipart/report; report-type=delivery-status;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/report' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'report' expect(c.parameters).to eql({"report-type" => "delivery-status"}) end it "should handle 'multipart/signed;'" do string = %q{multipart/signed;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/signed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'signed' expect(c.parameters).to eql({}) end it "should handle 'text/enriched;'" do string = %q{text/enriched;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/enriched' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'enriched' expect(c.parameters).to eql({}) end it "should handle 'text/html;'" do string = %q{text/html;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/html' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'html' expect(c.parameters).to eql({}) end it "should handle 'text/html; charset=iso-8859-1;'" do string = %q{text/html; charset=iso-8859-1;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/html' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'html' expect(c.parameters).to eql({"charset" => 'iso-8859-1'}) end it "should handle 'TEXT/PLAIN; charset=ISO-8859-1;'" do string = %q{TEXT/PLAIN; charset=ISO-8859-1;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'ISO-8859-1'}) end it "should handle 'text/plain'" do string = %q{text/plain} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({}) end it "should handle 'text/plain;'" do string = %q{text/plain;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({}) end it "should handle 'text/plain; charset=ISO-8859-1'" do string = %q{text/plain; charset=ISO-8859-1} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'ISO-8859-1'}) end it "should handle 'text/plain; charset=ISO-8859-1;'" do string = %q{text/plain; charset=ISO-8859-1; format=flowed} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'ISO-8859-1', "format" => 'flowed'}) end it "should handle 'text/plain; charset=us-ascii;'" do string = %q{text/plain; charset=us-ascii} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'us-ascii'}) end it "should handle 'text/plain; charset=US-ASCII; format=flowed'" do string = %q{text/plain; charset=US-ASCII; format=flowed} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'US-ASCII', "format" => 'flowed'}) end it "should handle 'text/plain; charset=US-ASCII; format=flowed'" do string = %q{text/plain; charset=US-ASCII; format=flowed} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'US-ASCII', "format" => 'flowed'}) end it "should handle 'text/plain; charset=utf-8'" do string = %q{text/plain; charset=utf-8} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'utf-8'}) end it "should handle 'text/plain; charset=utf-8'" do string = %q{text/plain; charset=X-UNKNOWN} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/plain' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'plain' expect(c.parameters).to eql({"charset" => 'X-UNKNOWN'}) end it "should handle 'text/x-ruby-script;'" do string = %q{text/x-ruby-script;} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/x-ruby-script' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'x-ruby-script' expect(c.parameters).to eql({}) end it "should handle 'text/x-ruby-script; name=\"hello.rb\"'" do string = %q{text/x-ruby-script; name="hello.rb"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'text/x-ruby-script' expect(c.main_type).to eq 'text' expect(c.sub_type).to eq 'x-ruby-script' expect(c.parameters).to eql({"name" => 'hello.rb'}) end it "should handle 'multipart/mixed; boundary=\"=_NextPart_Lycos_15031600484464_ID\"" do string = %q{multipart/mixed; boundary="=_NextPart_Lycos_15031600484464_ID"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({"boundary" => '=_NextPart_Lycos_15031600484464_ID'}) end it "should handle 'multipart/mixed; boundary=\"=_NextPart_2rfkindysadvnqw3nerasdf\";windows-852" do string = %q{multipart/mixed; boundary="=_NextPart_2rfkindysadvnqw3nerasdf";windows-852} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/mixed' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'mixed' expect(c.parameters).to eql({"boundary" => '=_NextPart_2rfkindysadvnqw3nerasdf', "windows-852" => ''}) end it "should handle 'multipart/alternative; boundary=----=_=NextPart_000_0093_01C81419.EB75E850" do string = %q{multipart/alternative; boundary=----=_=NextPart_000_0093_01C81419.EB75E850} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" => '----=_=NextPart_000_0093_01C81419.EB75E850'}) end it "should handle 'multipart/alternative; boundary=\"----=_=NextPart_000_0093_01C81419.EB75E850\"" do string = %q{multipart/alternative; boundary="----=_=NextPart_000_0093_01C81419.EB75E850"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/alternative' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'alternative' expect(c.parameters).to eql({"boundary" => '----=_=NextPart_000_0093_01C81419.EB75E850'}) end it "should handle 'multipart/related;boundary=1_4626B816_9F1690;Type=\"application/smil\";Start=\"\"'" do string = %q{multipart/related;boundary=1_4626B816_9F1690;Type="application/smil";Start=""} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'multipart/related' expect(c.main_type).to eq 'multipart' expect(c.sub_type).to eq 'related' expect(c.parameters).to eql({"boundary" => '1_4626B816_9F1690', "Type" => 'application/smil', "Start" => ''}) end it "should handle 'IMAGE/JPEG; name=\"IM 006.jpg\"'" do string = %q{IMAGE/JPEG; name="IM 006.jpg"} c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'image/jpeg' expect(c.main_type).to eq 'image' expect(c.sub_type).to eq 'jpeg' expect(c.parameters).to eql({"name" => "IM 006.jpg"}) end it "should handle 'unknown/unknown'" do string = %(unknown/unknown; charset=iso-8859-1; name=IMSTP19.gif) c = Mail::ContentTypeField.new(string) expect(c.content_type).to eq 'unknown/unknown' expect(c.main_type).to eq 'unknown' expect(c.sub_type).to eq 'unknown' expect(c.parameters).to eql('charset' => 'iso-8859-1', 'name' => 'IMSTP19.gif') end end describe "finding a filename" do it "should locate a filename if there is a filename" do string = %q{application/octet-stream; filename=mikel.jpg} c = Mail::ContentTypeField.new(string) expect(c.filename).to eq 'mikel.jpg' end it "should locate a name if there is no filename" do string = %q{application/octet-stream; name=mikel.jpg} c = Mail::ContentTypeField.new(string) expect(c.filename).to eq 'mikel.jpg' end it "should return an empty string when filename or name is empty" do string = %q{application/octet-stream; filename=""} c = Mail::ContentTypeField.new(string) expect(c.filename).to eq '' string = %q{application/octet-stream; name=""} c = Mail::ContentTypeField.new(string) expect(c.filename).to eq '' end it "should locate an encoded name as a filename" do string = %q{application/octet-stream; name*=iso-2022-jp'ja'01%20Quien%20Te%20Dijo%20feat.%20Pitbull.mp3} c = Mail::ContentTypeField.new(string) expected = "01 Quien Te Dijo feat. Pitbull.mp3" result = c.filename expect(expected).to eq result end it "should encode a non us-ascii filename" do Mail.defaults do param_encode_language('jp') end c = Mail::ContentTypeField.new('application/octet-stream') string = "01 Quien Te Dij\221at. Pitbull.mp3" string = string.dup.force_encoding('SJIS') result = %Q{Content-Type: application/octet-stream;\r\n\sfilename*=windows-31j'jp'01%20Quien%20Te%20Dij%91%61t.%20Pitbull.mp3\r\n} c.filename = string expect(c.parameters).to eql({"filename" => string}) expect(c.encoded).to eq result end end describe "handling badly formated content-type fields" do it "should handle missing sub-type on a text content type" do c = Mail::ContentTypeField.new('text') expect(c.content_type).to eq 'text/plain' end it "should handle missing ; after content-type" do c = Mail::ContentTypeField.new('multipart/mixed boundary="----=_NextPart_000_000F_01C17754.8C3CAF30"') expect(c.content_type).to eq 'multipart/mixed' expect(c.parameters['boundary']).to eq '----=_NextPart_000_000F_01C17754.8C3CAF30' end end describe "initializing with an array" do it "should initialize with an array" do c = Mail::ContentTypeField.new(['text', 'html', {'charset' => 'UTF-8'}]) expect(c.content_type).to eq 'text/html' expect(c.parameters['charset']).to eq 'UTF-8' end it "should allow many parameters to be passed in" do c = Mail::ContentTypeField.new(['text', 'html', {"format"=>"flowed", "charset"=>"utf-8"}]) expect(c.content_type).to eq 'text/html' expect(c.parameters['charset']).to eq 'utf-8' expect(c.parameters['format']).to eq 'flowed' end end describe "special case values needing sanity" do it "should handle 'text/plain;ISO-8559-1'" do c = Mail::ContentTypeField.new('text/plain;ISO-8559-1') expect(c.string).to eq 'text/plain' expect(c.parameters['charset']).to eq 'iso-8559-1' end it "should handle 'text/plain; charset = \"iso-8859-1\"'" do c = Mail::ContentTypeField.new('text/plain; charset = "iso-8859-1"') expect(c.string).to eq 'text/plain' expect(c.parameters['charset']).to eq 'iso-8859-1' end it "should handle text; params" do c = Mail::ContentTypeField.new('text; charset=utf-8') expect(c.string).to eq 'text/plain' expect(c.parameters['charset']).to eq 'utf-8' end it 'should handle text/html; charset="charset="GB2312""' do c = Mail::ContentTypeField.new('text/html; charset="charset="GB2312""') expect(c.string).to eq 'text/html' expect(c.parameters['charset']).to eq 'gb2312' end it "should handle application/octet-stream; name=archiveshelp1[1].htm" do c = Mail::ContentTypeField.new('application/octet-stream; name=archiveshelp1[1].htm') expect(c.string).to eq 'application/octet-stream' expect(c.parameters['name']).to eq 'archiveshelp1[1].htm' end it 'should handle text/plain;; format="flowed"' do c = Mail::ContentTypeField.new('text/plain;; format="flowed"') expect(c.string).to eq 'text/plain' expect(c.parameters['format']).to eq 'flowed' end it 'set an empty content type to text/plain' do c = Mail::ContentTypeField.new('') expect(c.string).to eq 'text/plain' end it "should just ignore illegal params like audio/x-midi;\r\n\sname=Part .exe" do c = Mail::ContentTypeField.new("audio/x-midi;\r\n\sname=Part .exe") expect(c.string).to eq 'audio/x-midi' expect(c.parameters['name']).to be_nil end it "should handle: rfc822; format=flowed; charset=iso-8859-15" do c = Mail::ContentTypeField.new("rfc822; format=flowed; charset=iso-8859-15") expect(c.string).to eq 'text/plain' expect(c.parameters['format']).to eq 'flowed' expect(c.parameters['charset']).to eq 'iso-8859-15' end it "should just get the mime type if all else fails with some real garbage" do c = Mail::ContentTypeField.new("text/html; format=flowed; charset=iso-8859-15 Mime-Version: 1.0") expect(c.string).to eq 'text/html' end it "shouldn't include separating semicolon in parameter value when sanitizing" do c = Mail::ContentTypeField.new(%Q{Multipart/Related;boundary=boundary123?WUT; type="application/xml";}) expect(c.parameters['boundary']).to eq 'boundary123?WUT' end end end mail-2.8.1/spec/mail/fields/date_field_spec.rb000066400000000000000000000055351436372131700212240ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::DateField do # The origination date field consists of the field name "Date" followed # by a date-time specification. # # orig-date = "Date:" date-time CRLF # # The origination date specifies the date and time at which the creator # of the message indicated that the message was complete and ready to # enter the mail delivery system. For instance, this might be the time # that a user pushes the "send" or "submit" button in an application # program. In any case, it is specifically not intended to convey the # time that the message is actually transported, but rather the time at # which the human or other creator of the message has put the message # into its final form, ready for transport. (For example, a portable # computer user who is not connected to a network might queue a message # for delivery. The origination date is intended to contain the date # and time that the user queued the message, not the time when the user # connected to the network to send the message.) describe "initialization" do it "should initialize" do expect { Mail::DateField.new("12 Aug 2009 00:00:02 GMT") }.not_to raise_error end it "should be able to tell the time" do expect(Mail::DateField.new("12 Aug 2009 00:00:02 GMT").date_time.class).to eq DateTime end it "should accept a string without the field name" do t = Mail::DateField.new('12 Aug 2009 00:00:02 GMT') expect(t.name).to eq 'Date' expect(t.value).to eq 'Wed, 12 Aug 2009 00:00:02 +0000' expect(t.date_time).to eq ::DateTime.parse('12 Aug 2009 00:00:02 GMT') end it "should accept nil as a value" do t = Mail::DateField.new(nil) expect(t.date_time).not_to be_nil end it "should allow us to encode an date field" do field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT') expect(field.encoded).to eq "Date: Wed, 12 Aug 2009 00:00:02 +0000\r\n" end it "should allow us to decode an address field" do field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT') expect(field.decoded).to eq "Wed, 12 Aug 2009 00:00:02 +0000" end it "should be able to parse a really bad spacing example" do field = Mail::DateField.new("Fri, 21 Nov 1997 09(comment): 55 : 06 -0600") expect(field.decoded).to eq "Fri, 21 Nov 1997 09:55:06 -0600" end it "should give today's date if no date is specified" do now = DateTime.now expect(DateTime).to receive(:now).at_least(:once).and_return(now) expect(Mail::DateField.new.date_time).to eq ::DateTime.parse(now.to_s) end it "should handle invalid date" do field = Mail::DateField.new("12 Aug 2009 30:00:02 GMT") expect(field.date_time).to be_nil end end end mail-2.8.1/spec/mail/fields/envelope_spec.rb000066400000000000000000000030261436372131700207520ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::Envelope do # From RFC4155 The application/mbox Media Type # # o Each message in the mbox database MUST be immediately preceded # by a single separator line, which MUST conform to the following # syntax: # # The exact character sequence of "From"; # # a single Space character (0x20); # # the email address of the message sender (as obtained from the # message envelope or other authoritative source), conformant # with the "addr-spec" syntax from RFC 2822; # # a single Space character; # # a timestamp indicating the UTC date and time when the message # was originally received, conformant with the syntax of the # traditional UNIX 'ctime' output sans timezone (note that the # use of UTC precludes the need for a timezone indicator); # # an end-of-line marker. it "should initialize" do expect { Mail::Envelope.new('mikel@test.lindsaar.net Mon May 2 16:07:05 2005') }.not_to raise_error end describe "accessor methods" do it "should return the address" do envelope = Mail::Envelope.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") expect(envelope.from).to eq "mikel@test.lindsaar.net" end it "should return the date_time" do envelope = Mail::Envelope.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009") expect(envelope.date).to eq ::DateTime.parse("Mon Aug 17 00:39:21 2009") end end end mail-2.8.1/spec/mail/fields/from_field_spec.rb000066400000000000000000000063201436372131700212430ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # from = "From:" mailbox-list CRLF describe Mail::FromField do describe "initialization" do it "should initialize" do expect { Mail::FromField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::FromField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'From' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::FromField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::FromField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "From: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end it "should return the encoded line" do t = Mail::FromField.new("bob@me.com") expect(t.encoded).to eq "From: bob@me.com\r\n" end it "should return the decoded line" do t = Mail::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.decoded).to eq "sam@me.com, my_group: mikel@me.com, bob@you.com;" end end it "should handle non ascii" do t = Mail::FromField.new('"Foo áëô îü" ') expect(t.decoded).to eq '"Foo áëô îü" ' expect(t.encoded).to eq "From: =?UTF-8?B?Rm9vIMOhw6vDtCDDrsO8?= \r\n" end it "should work without quotes" do t = Mail::FromField.new('Foo áëô îü ') expect(t.decoded).to eq '"Foo áëô îü" ' expect(t.encoded).to eq "From: =?UTF-8?B?Rm9vIMOhw6vDtCDDrsO8?= \r\n" end it "should work with combinations of quotes and non ascii" do t = Mail::FromField.new('" „Floć Žama“ Rain Shelter \"Floć Žama-Rain Shelter\"" ') expect(t.decoded).to eq '"„Floć Žama“ Rain Shelter \"Floć Žama-Rain Shelter\"" ' expect(t.encoded).to eq "From: =?UTF-8?B?4oCeRmxvxIcgxb1hbWHigJwgUmFpbiBTaGVsdGVyICJGbG/EhyDFvWFtYS1S?= =?UTF-8?B?YWluIFNoZWx0ZXIi?= \r\n" end end mail-2.8.1/spec/mail/fields/in_reply_to_field_spec.rb000066400000000000000000000073251436372131700226310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # The "In-Reply-To:" field will contain the contents of the "Message- # ID:" field of the message to which this one is a reply (the "parent # message"). If there is more than one parent message, then the "In- # Reply-To:" field will contain the contents of all of the parents' # "Message-ID:" fields. If there is no "Message-ID:" field in any of # the parent messages, then the new message will have no "In-Reply-To:" # field. describe Mail::InReplyToField do describe "initialization" do it "should initialize" do expect { Mail::InReplyToField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net>') expect(t.name).to eq 'In-Reply-To' expect(t.value).to eq '<1234@test.lindsaar.net>' expect(t.message_id).to eq '1234@test.lindsaar.net' end it "should provide encoded" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net>') expect(t.encoded).to eq "In-Reply-To: <1234@test.lindsaar.net>\r\n" end it "should handle many encoded message IDs" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>') expect(t.encoded).to eq "In-Reply-To: <1234@test.lindsaar.net>\r\n <4567@test.lindsaar.net>\r\n" end it "should handle an array of message IDs" do t = Mail::InReplyToField.new(['<1234@test.lindsaar.net>', '<4567@test.lindsaar.net>']) expect(t.encoded).to eq "In-Reply-To: <1234@test.lindsaar.net>\r\n <4567@test.lindsaar.net>\r\n" end it "should provide decoded" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net>') expect(t.decoded).to eq "<1234@test.lindsaar.net>" end it "should handle many decoded message IDs" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>') expect(t.decoded).to eq '<1234@test.lindsaar.net> <4567@test.lindsaar.net>' end it "should handle an empty value" do t = Mail::InReplyToField.new('') expect(t.name).to eq 'In-Reply-To' expect(t.decoded).to be_nil end end describe "handlign multiple message ids" do it "should handle many message IDs" do t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>') expect(t.name).to eq 'In-Reply-To' expect(t.message_ids).to eq ['1234@test.lindsaar.net', '4567@test.lindsaar.net'] end end it "should output lines shorter than 998 chars" do k = Mail::InReplyToField.new(' ') lines = k.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 998 } end end mail-2.8.1/spec/mail/fields/keywords_field_spec.rb000066400000000000000000000063761436372131700221620ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::KeywordsField do describe "initializing" do it "should initialize" do expect { Mail::KeywordsField.new("this, is, email") }.not_to raise_error end it "should accept a string without the field name" do k = Mail::KeywordsField.new('these are keywords, so there') expect(k.name).to eq 'Keywords' expect(k.value).to eq 'these are keywords, so there' end end describe "giving a list of keywords" do it "should return a list of keywords" do k = Mail::KeywordsField.new('these are keywords, so there') expect(k.keywords).to eq ['these are keywords', 'so there'] end it "should handle phrases" do k = Mail::KeywordsField.new('"these, are keywords", so there') expect(k.keywords).to eq ['these, are keywords', 'so there'] end it "should handle comments" do k = Mail::KeywordsField.new('"these, are keywords", so there (This is an irrelevant comment)') expect(k.keywords).to eq ['these, are keywords', 'so there (This is an irrelevant comment)'] end it "should handle comments" do k = Mail::KeywordsField.new('"these, are keywords", so there (This is an irrelevant comment)') expect(k.keywords).to eq ['these, are keywords', 'so there (This is an irrelevant comment)'] end it "should handle comments in quotes" do k = Mail::KeywordsField.new('"these, are keywords (another comment to be ignored)", so there (This is an irrelevant comment)') expect(k.keywords).to eq ['these, are keywords (another comment to be ignored)', 'so there (This is an irrelevant comment)'] end end describe "encoding and decoding" do it "should encode" do k = Mail::KeywordsField.new('these are keywords, so there') expect(k.encoded).to eq "Keywords: these are keywords,\r\n so there\r\n" end it "should decode" do k = Mail::KeywordsField.new('these are keywords, so there') expect(k.decoded).to eq "these are keywords, so there" end end it "should output lines shorter than 998 chars" do k = Mail::KeywordsField.new('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed placerat euismod velit nec convallis. Cras bibendum mattis arcu a tincidunt. Nullam ac orci vitae massa elementum ultricies ultricies nec quam. Praesent eleifend viverra semper. Sed id ultricies ipsum. Pellentesque sed nunc mauris, at varius sem. Curabitur pretium pellentesque velit, eget pellentesque dolor interdum eget. Duis ac lectus nec arcu pharetra lobortis. Integer risus felis, convallis ut feugiat quis, imperdiet ut sapien. Nullam imperdiet leo nec lectus imperdiet mollis. Proin nec lectus id erat pellentesque pretium vitae sit amet massa. Proin interdum pellentesque mi, at tristique sem facilisis ut. Donec enim mauris, viverra ut lacinia pharetra, elementum nec mi. Ut at interdum massa. Integer placerat tortor at tellus lobortis a mattis massa ultricies. Vivamus nec dolor at justo fringilla laoreet rhoncus fermentum lectus. Praesent tincidunt congue mauris vitae aliquam. Mauris arcu mauris, faucibus sed turpis duis.') lines = k.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 998 } end end mail-2.8.1/spec/mail/fields/message_id_field_spec.rb000066400000000000000000000175501436372131700224070ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # 3.6.4. Identification fields # # Though optional, every message SHOULD have a "Message-ID:" field. # Furthermore, reply messages SHOULD have "In-Reply-To:" and # "References:" fields as appropriate, as described below. # # The "Message-ID:" field contains a single unique message identifier. # The "References:" and "In-Reply-To:" field each contain one or more # unique message identifiers, optionally separated by CFWS. # # The message identifier (msg-id) is similar in syntax to an angle-addr # construct without the internal CFWS. # # message-id = "Message-ID:" msg-id CRLF # # in-reply-to = "In-Reply-To:" 1*msg-id CRLF # # references = "References:" 1*msg-id CRLF # # msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] # # id-left = dot-atom-text / no-fold-quote / obs-id-left # # id-right = dot-atom-text / no-fold-literal / obs-id-right # # no-fold-quote = DQUOTE *(qtext / quoted-pair) DQUOTE # # no-fold-literal = "[" *(dtext / quoted-pair) "]" # # The "Message-ID:" field provides a unique message identifier that # refers to a particular version of a particular message. The # uniqueness of the message identifier is guaranteed by the host that # generates it (see below). This message identifier is intended to be # machine readable and not necessarily meaningful to humans. A message # identifier pertains to exactly one instantiation of a particular # message; subsequent revisions to the message each receive new message # identifiers. # # Note: There are many instances when messages are "changed", but those # changes do not constitute a new instantiation of that message, and # therefore the message would not get a new message identifier. For # example, when messages are introduced into the transport system, they # are often prepended with additional header fields such as trace # fields (described in section 3.6.7) and resent fields (described in # section 3.6.6). The addition of such header fields does not change # the identity of the message and therefore the original "Message-ID:" # field is retained. In all cases, it is the meaning that the sender # of the message wishes to convey (i.e., whether this is the same # message or a different message) that determines whether or not the # "Message-ID:" field changes, not any particular syntactic difference # that appears (or does not appear) in the message. describe Mail::MessageIdField do describe "initialization" do it "should initialize" do expect { Mail::MessageIdField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m.name).to eq 'Message-ID' expect(m.value).to eq '<1234@test.lindsaar.net>' expect(m.message_id).to eq '1234@test.lindsaar.net' end it "should accept a nil value and generate a message_id" do m = Mail::MessageIdField.new(nil) expect(m.name).to eq 'Message-ID' expect(m.value).not_to be_nil end end describe "ensuring only one message ID" do it "should not accept a string with multiple message IDs but only return the first" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>') expect(m.name).to eq 'Message-ID' expect(m.to_s).to eq '<1234@test.lindsaar.net>' expect(m.message_id).to eq '1234@test.lindsaar.net' expect(m.message_ids).to eq ['1234@test.lindsaar.net'] end it "should change the message id if given a new message id" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m.to_s).to eq '<1234@test.lindsaar.net>' m.value = '<4567@test.lindsaar.net>' expect(m.to_s).to eq '<4567@test.lindsaar.net>' end end describe "instance methods" do it "should provide to_s" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m.to_s).to eq '<1234@test.lindsaar.net>' expect(m.message_id.to_s).to eq '1234@test.lindsaar.net' end it "should provide encoded" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m.encoded).to eq "Message-ID: <1234@test.lindsaar.net>\r\n" end it "should provide decoded" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m.decoded).to eq "<1234@test.lindsaar.net>" end it "should respond to :responsible_for?" do m = Mail::MessageIdField.new('<1234@test.lindsaar.net>') expect(m).to respond_to(:responsible_for?) end end describe "generating a message id" do it "should generate a message ID if it has no value" do m = Mail::MessageIdField.new expect(Mail::Utilities.blank?(m.message_id)).not_to be_truthy end it "should generate a random message ID" do m = Mail::MessageIdField.new 1.upto(100) do expect(m.message_id).not_to eq(Mail::MessageIdField.new.message_id) end end end describe "weird message IDs" do it "should be able to parse <000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com>" do m = Mail::MessageIdField.new('<000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com>') expect(m.message_id).to eq '000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com' end it "should be able to parse <.AAA-default-12226,16.1089643496@us-bdb-1201.vdc.amazon.com>" do m = Mail::MessageIdField.new('<.AAA-default-12226,16.1089643496@us-bdb-1201.vdc.amazon.com>') expect(m.message_id).to eq '.AAA-default-12226,16.1089643496@us-bdb-1201.vdc.amazon.com' end it "should be able to parse <091720041340.19561.414AE9430005E91000004C6922007589429B0702040790040A0E08 0C0703@comcast.net>" do m = Mail::MessageIdField.new( '<091720041340.19561.414AE9430005E91000004C6922007589429B0702040790040A0E08 0C0703@comcast.net>') expect(m.message_id).to eq '091720041340.19561.414AE9430005E91000004C6922007589429B0702040790040A0E08 0C0703@comcast.net' end it "should be able to parse <3851.1096568577MSOSI1188307:1OSIMS@gamefly.com>" do m = Mail::MessageIdField.new( '<3851.1096568577MSOSI1188307:1OSIMS@gamefly.com>') expect(m.message_id).to eq '3851.1096568577MSOSI1188307:1OSIMS@gamefly.com' end it "should be able to parse <3851.1096568577MSOSI1188307:1OSIMS@gamefly.com >" do m = Mail::MessageIdField.new( '<3851.1096568577MSOSI1188307:1OSIMS@gamefly.com >') expect(m.message_id).to eq '3851.1096568577MSOSI1188307:1OSIMS@gamefly.com ' end it "should be able to parse <000301caf03a$77d922ae$82dba8c0@.pool.ukrtel.net>" do m = Mail::MessageIdField.new( '<000301caf03a$77d922ae$82dba8c0@.pool.ukrtel.net>') expect(m.message_id).to eq '000301caf03a$77d922ae$82dba8c0@.pool.ukrtel.net' end it 'should be able to parse <"urn:correios:msg:2011071303483114f523ef89e040878bca2e451a999448"@1310528911569.rte-svc-na-5006.iad5.amazon.com>' do m = Mail::MessageIdField.new( '<"urn:correios:msg:2011071303483114f523ef89e040878bca2e451a999448"@1310528911569.rte-svc-na-5006.iad5.amazon.com>' ) expect(m.message_id).to eq '"urn:correios:msg:2011071303483114f523ef89e040878bca2e451a999448"@1310528911569.rte-svc-na-5006.iad5.amazon.com' end it 'should be able to parse <7467BC5DC7CCEB429E2D3F05E49B3067375E6DC038@EXVMBX020-10.exch020.server...' do m = Mail::MessageIdField.new( '<7467BC5DC7CCEB429E2D3F05E49B3067375E6DC038@EXVMBX020-10.exch020.server...' ) expect(m.message_id).to eq '<7467BC5DC7CCEB429E2D3F05E49B3067375E6DC038@EXVMBX020-10.exch020.server...' end it 'should be able to parse |2a26f8f146e27159|' do m = Mail::MessageIdField.new( '2a26f8f146e27159' ) expect(m.message_id).to eq '2a26f8f146e27159' end end end mail-2.8.1/spec/mail/fields/mime_version_field_spec.rb000066400000000000000000000141351436372131700227770ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::MimeVersionField do # MIME-Version Header Field # # Since RFC 822 was published in 1982, there has really been only one # format standard for Internet messages, and there has been little # perceived need to declare the format standard in use. This document # is an independent specification that complements RFC 822. Although # the extensions in this document have been defined in such a way as to # be compatible with RFC 822, there are still circumstances in which it # might be desirable for a mail-processing agent to know whether a # message was composed with the new standard in mind. # # Therefore, this document defines a new header field, "MIME-Version", # which is to be used to declare the version of the Internet message # body format standard in use. # # Messages composed in aMimeVersionordance with this document MUST include such # a header field, with the following verbatim text: # # MIME-Version: 1.0 # # The presence of this header field is an assertion that the message # has been composed in compliance with this document. # # Since it is possible that a future document might extend the message # format standard again, a formal BNF is given for the content of the # MIME-Version field: # # version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT # # Thus, future format specifiers, which might replace or extend "1.0", # are constrained to be two integer fields, separated by a period. If # a message is received with a MIME-version value other than "1.0", it # cannot be assumed to conform with this document. # # Note that the MIME-Version header field is required at the top level # of a message. It is not required for each body part of a multipart # entity. It is required for the embedded headers of a body of type # "message/rfc822" or "message/partial" if and only if the embedded # message is itself claimed to be MIME-conformant. # # It is not possible to fully specify how a mail reader that conforms # with MIME as defined in this document should treat a message that # might arrive in the future with some value of MIME-Version other than # "1.0". # # It is also worth noting that version control for specific media types # is not aMimeVersionomplished using the MIME-Version mechanism. In particular, # some formats (such as application/postscript) have version numbering # conventions that are internal to the media format. Where such # conventions exist, MIME does nothing to supersede them. Where no # such conventions exist, a MIME media type might use a "version" # parameter in the content-type field if necessary. # # NOTE TO IMPLEMENTORS: When checking MIME-Version values any RFC 822 # comment strings that are present must be ignored. In particular, the # following four MIME-Version fields are equivalent: # # MIME-Version: 1.0 # # MIME-Version: 1.0 (produced by MetaSend Vx.x) # # MIME-Version: (produced by MetaSend Vx.x) 1.0 # # MIME-Version: 1.(produced by MetaSend Vx.x)0 # # In the absence of a MIME-Version field, a receiving mail user agent # (whether conforming to MIME requirements or not) may optionally # choose to interpret the body of the message aMimeVersionording to local # conventions. Many such conventions are currently in use and it # should be noted that in practice non-MIME messages can contain just # about anything. # # It is impossible to be certain that a non-MIME mail message is # actually plain text in the US-ASCII character set since it might well # be a message that, using some set of nonstandard local conventions # that predate MIME, includes text in another character set or non- # textual data presented in a manner that cannot be automatically # recognized (e.g., a uuencoded compressed UNIX tar file). describe "initialization" do it "should initialize" do expect { Mail::MimeVersionField.new("1.0") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::MimeVersionField.new('1.0') expect(t.name).to eq 'Mime-Version' expect(t.value).to eq '1.0' end end describe "parsing a version string" do it "should get a major value" do t = Mail::MimeVersionField.new('1.0') expect(t.major).to eq 1 end it "should get a minor value" do t = Mail::MimeVersionField.new('1.0') expect(t.minor).to eq 0 end it "should get a version string" do t = Mail::MimeVersionField.new('1.0') expect(t.version).to eq '1.0' end it "should handle comments before the major version" do t = Mail::MimeVersionField.new('(This is a comment) 1.0') expect(t.version).to eq '1.0' end it "should handle comments before the major version without space" do t = Mail::MimeVersionField.new('(This is a comment)1.0') expect(t.version).to eq '1.0' end it "should handle comments after the major version without space" do t = Mail::MimeVersionField.new('1(This is a comment).0') expect(t.version).to eq '1.0' end it "should handle comments before the minor version without space" do t = Mail::MimeVersionField.new('1.(This is a comment)0') expect(t.version).to eq '1.0' end it "should handle comments after the minor version without space" do t = Mail::MimeVersionField.new('1.0(This is a comment)') expect(t.version).to eq '1.0' end it "should handle comments after the minor version" do t = Mail::MimeVersionField.new('1.0 (This is a comment)') expect(t.version).to eq '1.0' end it "should accept nil as a value" do t = Mail::MimeVersionField.new(nil) expect(t.version).not_to be_nil end it "should provide an encoded value" do t = Mail::MimeVersionField.new('1.0 (This is a comment)') expect(t.encoded).to eq "Mime-Version: 1.0\r\n" end it "should provide an decoded value" do t = Mail::MimeVersionField.new('1.0 (This is a comment)') expect(t.decoded).to eq '1.0' end end end mail-2.8.1/spec/mail/fields/parameter_hash_spec.rb000066400000000000000000000062111436372131700221170ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' require 'mail/fields/parameter_hash' describe Mail::ParameterHash do it "should return the values in the hash" do hash = Mail::ParameterHash.new hash.merge!({'value1' => 'one', 'value2' => 'two'}) expect(hash.keys).to include("value1") expect(hash.keys).to include("value2") expect(hash.values).to include('one') expect(hash.values).to include('two') end it "should return the values in the hash regardless of symbol or string" do hash = Mail::ParameterHash.new hash.merge!({'value1' => 'one', 'value2' => 'two'}) expect(hash['value1']).to eq 'one' expect(hash['value2']).to eq 'two' expect(hash[:value1]).to eq 'one' expect(hash[:value2]).to eq 'two' end it "should return the values in the hash using case-insensitive key matching" do hash = Mail::ParameterHash.new hash.merge!({'value1' => 'one', 'VALUE2' => 'two'}) expect(hash['VALUE1']).to eq 'one' expect(hash['vAlUe2']).to eq 'two' expect(hash[:VaLuE1]).to eq 'one' expect(hash[:value2]).to eq 'two' end it "should return the correct value if they are not encoded" do hash = Mail::ParameterHash.new hash.merge!({'value1' => 'one', 'value2' => 'two'}) expect(hash['value1']).to eq 'one' expect(hash['value2']).to eq 'two' end it "should return a name list concatenated" do hash = Mail::ParameterHash.new hash.merge!({'value*1' => 'one', 'value*2' => 'two'}) expect(hash['value']).to eq 'onetwo' end it "should return a name list concatenated and unencoded" do hash = Mail::ParameterHash.new hash.merge!({'value*0*' => "us-ascii'en'This%20is%20even%20more%20", 'value*1*' => "%2A%2A%2Afun%2A%2A%2A%20", 'value*2' => "isn't it"}) expect(hash['value']).to eq "This is even more ***fun*** isn't it" end it "allows for blank language" do hash = Mail::ParameterHash.new hash.merge!({'value*' => "us-ascii''Hello%20there"}) expect(hash['value']).to eq "Hello there" end it "allows for blank charset" do hash = Mail::ParameterHash.new hash.merge!({'value*' => "'en'Hello%20there"}) expect(hash['value']).to eq "Hello there" end it "allows for blank charset and language" do hash = Mail::ParameterHash.new hash.merge!({'value*' => "''Hello%20there"}) expect(hash['value']).to eq "Hello there" end it "converts from specified encoding to utf-8" do hash = Mail::ParameterHash.new hash.merge!({'value*' => "iso-8859-1'en'H%EBll%F3%20there"}) expect(hash['value']).to eq "Hëlló there" end it "should allow us to add a value" do hash = Mail::ParameterHash.new hash['value'] = 'bob' expect(hash['value']).to eq 'bob' end it "should return an encoded value" do hash = Mail::ParameterHash.new hash.merge!({'value*0*' => "us-ascii'en'This%20is%20even%20more%20", 'value*1*' => "%2A%2A%2Afun%2A%2A%2A%20", 'value*2' => "isn't it"}) expect(hash.encoded).to eq %Q{value*0*=us-ascii'en'This%20is%20even%20more%20;\r\n\svalue*1*=%2A%2A%2Afun%2A%2A%2A%20;\r\n\svalue*2="isn't it"} end end mail-2.8.1/spec/mail/fields/received_field_spec.rb000066400000000000000000000067551436372131700221020ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::ReceivedField do it "should initialize" do expect { Mail::ReceivedField.new("from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)") }.not_to raise_error end it "should be able to tell the time" do expect(Mail::ReceivedField.new("from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)").date_time.class).to eq DateTime end it "should accept a string without the field name" do t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)') expect(t.name).to eq 'Received' expect(t.value).to eq 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)' expect(t.info).to eq 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ' expect(t.date_time).to eq ::DateTime.parse('10 May 2005 17:26:50 +0000 (GMT)') end it "should provide an encoded value" do t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)') expect(t.encoded).to eq "Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000\r\n" end it "should provide an encoded value with correct timezone" do t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 -0500 (EST)') expect(t.encoded).to eq "Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 -0500\r\n" end it "should provide an decoded value" do t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000 (GMT)') expect(t.decoded).to eq 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for ; Tue, 10 May 2005 17:26:50 +0000' end it "should handle empty name-value lists with a comment only (qmail style)" do t = Mail::ReceivedField.new('(qmail 24365 invoked by uid 99); 25 Jan 2011 12:31:11 -0000') expect(t.info).to eq '(qmail 24365 invoked by uid 99)' end it "should handle a blank value" do t = Mail::ReceivedField.new('') expect(t.decoded).to eq '' expect(t.encoded).to eq "Received: \r\n" end it "should handle invalid date" do t = Mail::ReceivedField.new("mail.example.com (192.168.1.1) by mail.example.com with (esmtp) id (qid) for ; Mon, 29 Jul 2013 25:12:46 +0900") expect(t.name).to eq "Received" expect(t.value).to eq "mail.example.com (192.168.1.1) by mail.example.com with (esmtp) id (qid) for ; Mon, 29 Jul 2013 25:12:46 +0900" expect(t.info).to eq "mail.example.com (192.168.1.1) by mail.example.com with (esmtp) id (qid) for " expect(t.date_time).to eq nil expect(t.formatted_date).to eq nil end end mail-2.8.1/spec/mail/fields/references_field_spec.rb000066400000000000000000000105301436372131700224170ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # The "References:" field will contain the contents of the parent's # "References:" field (if any) followed by the contents of the parent's # "Message-ID:" field (if any). If the parent message does not contain # a "References:" field but does have an "In-Reply-To:" field # containing a single message identifier, then the "References:" field # will contain the contents of the parent's "In-Reply-To:" field # followed by the contents of the parent's "Message-ID:" field (if # any). If the parent has none of the "References:", "In-Reply-To:", # or "Message-ID:" fields, then the new message will have no # "References:" field. describe Mail::ReferencesField do it "should initialize" do expect { Mail::ReferencesField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ReferencesField.new('<1234@test.lindsaar.net>') expect(t.name).to eq 'References' expect(t.value).to eq '<1234@test.lindsaar.net>' expect(t.message_id).to eq '1234@test.lindsaar.net' end it "should accept multiple message ids" do t = Mail::ReferencesField.new('<1234@test.lindsaar.net> <5678@test.lindsaar.net>') expect(t.name).to eq 'References' expect(t.value).to eq '<1234@test.lindsaar.net> <5678@test.lindsaar.net>' expect(t.message_id).to eq '1234@test.lindsaar.net' expect(t.message_ids).to eq ['1234@test.lindsaar.net', '5678@test.lindsaar.net'] expect(t.to_s).to eq '<1234@test.lindsaar.net> <5678@test.lindsaar.net>' end it "should accept an array of message ids" do t = Mail::ReferencesField.new(['<1234@test.lindsaar.net>', '<5678@test.lindsaar.net>']) expect(t.encoded).to eq "References: <1234@test.lindsaar.net>\r\n <5678@test.lindsaar.net>\r\n" end it "should accept no message ids" do t = Mail::ReferencesField.new('') expect(t.name).to eq 'References' expect(t.decoded).to be_nil end it "should output lines shorter than 998 chars" do k = Mail::ReferencesField.new(' ') lines = k.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 998 } end it "should handle comma-separated values" do t = Mail::ReferencesField.new('<1234@test.lindsaar.net>, <5678@test.lindsaar.net>') expect(t.name).to eq 'References' expect(t.value).to eq '<1234@test.lindsaar.net>, <5678@test.lindsaar.net>' expect(t.message_id).to eq '1234@test.lindsaar.net' expect(t.message_ids).to eq ['1234@test.lindsaar.net', '5678@test.lindsaar.net'] expect(t.to_s).to eq '<1234@test.lindsaar.net> <5678@test.lindsaar.net>' end it 'should be able to parse |2a26f8f146e27159@domain.com@domain.com, 2a26f8f146e27159@domain.com@domain.com|' do m = Mail::ReferencesField.new( '2a26f8f146e27159@domain.com@domain.com, 4769770500E92399@n064.sc1.he.tucows.com' ) expect(m.message_ids).to eq [ '2a26f8f146e27159@domain.com@domain.com', '4769770500E92399@n064.sc1.he.tucows.com' ] end it 'should be able to parse |2a26f8f146e27159@domain.com@domain.com 2a26f8f146e27159@domain.com@domain.com|' do m = Mail::ReferencesField.new( '2a26f8f146e27159@domain.com@domain.com 4769770500E92399@n064.sc1.he.tucows.com' ) expect(m.message_ids).to eq [ '2a26f8f146e27159@domain.com@domain.com', '4769770500E92399@n064.sc1.he.tucows.com' ] end end mail-2.8.1/spec/mail/fields/reply_to_field_spec.rb000066400000000000000000000036321436372131700221400ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # reply-to = "Reply-To:" address-list CRLF # describe Mail::ReplyToField do describe "initialization" do it "should initialize" do expect { Mail::ReplyToField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ReplyToField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Reply-To' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ReplyToField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ReplyToField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Reply-To: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end end end mail-2.8.1/spec/mail/fields/resent_bcc_field_spec.rb000066400000000000000000000036701436372131700224140ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF describe Mail::ResentBccField do describe "initialization" do it "should initialize" do expect { Mail::ResentBccField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentBccField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Resent-Bcc' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ResentBccField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ResentBccField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Resent-Bcc: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end end end mail-2.8.1/spec/mail/fields/resent_cc_field_spec.rb000066400000000000000000000036421436372131700222510ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # resent-cc = "Resent-Cc:" address-list CRLF describe Mail::ResentCcField do describe "initialization" do it "should initialize" do expect { Mail::ResentCcField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentCcField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Resent-Cc' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ResentCcField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ResentCcField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Resent-Cc: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end end end mail-2.8.1/spec/mail/fields/resent_date_field_spec.rb000066400000000000000000000017121436372131700225750ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::ResentDateField do it "should initialize" do expect { Mail::ResentDateField.new("12 Aug 2009 00:00:02 GMT") }.not_to raise_error end it "should be able to tell the time" do expect(Mail::ResentDateField.new("12 Aug 2009 00:00:02 GMT").date_time.class).to eq DateTime end it "should accept a string without the field name" do t = Mail::ResentDateField.new('12 Aug 2009 00:00:02 GMT') expect(t.name).to eq 'Resent-Date' expect(t.value).to eq 'Wed, 12 Aug 2009 00:00:02 +0000' expect(t.date_time).to eq ::DateTime.parse('12 Aug 2009 00:00:02 GMT') end it "should give today's date if no date is specified" do now = DateTime.now expect(DateTime).to receive(:now).at_least(:once).and_return(now) t = Mail::ResentDateField.new expect(t.name).to eq 'Resent-Date' expect(t.date_time).to eq ::DateTime.parse(now.to_s) end end mail-2.8.1/spec/mail/fields/resent_from_field_spec.rb000066400000000000000000000036701436372131700226300ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # resent-from = "Resent-From:" mailbox-list CRLF describe Mail::ResentFromField do describe "initialization" do it "should initialize" do expect { Mail::ResentFromField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentFromField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Resent-From' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ResentFromField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ResentFromField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ResentFromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ResentFromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ResentFromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Resent-From: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end end end mail-2.8.1/spec/mail/fields/resent_message_id_field_spec.rb000066400000000000000000000033041436372131700237570ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::ResentMessageIdField do it "should initialize" do expect { Mail::ResentMessageIdField.new("<1234@test.lindsaar.net>") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentMessageIdField.new('<1234@test.lindsaar.net>') expect(t.name).to eq 'Resent-Message-ID' expect(t.value).to eq '<1234@test.lindsaar.net>' expect(t.message_id).to eq '1234@test.lindsaar.net' end it "should output lines shorter than 998 chars" do k = Mail::ResentMessageIdField.new(' ') lines = k.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 998 } end end mail-2.8.1/spec/mail/fields/resent_sender_field_spec.rb000066400000000000000000000022571436372131700231450ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # resent-sender = "Resent-Sender:" mailbox CRLF describe Mail::ResentSenderField do let :field do Mail::ResentSenderField.new('Mikel Lindsaar ') end describe "initialization" do it "should initialize" do expect { Mail::ResentSenderField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentSenderField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Resent-Sender' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end it "formats the sender" do expect(field.formatted).to eq ['Mikel Lindsaar '] end it "parses a single sender address" do expect(field.address).to eq 'mikel@test.lindsaar.net' end it "returns the field value" do expect(field.value).to eq 'Mikel Lindsaar ' end it "encodes a header line" do expect(field.encoded).to eq "Resent-Sender: Mikel Lindsaar \r\n" end end mail-2.8.1/spec/mail/fields/resent_to_field_spec.rb000066400000000000000000000036421436372131700223060ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # # resent-to = "Resent-To:" address-list CRLF describe Mail::ResentToField do describe "initialization" do it "should initialize" do expect { Mail::ResentToField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ResentToField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'Resent-To' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ResentToField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ResentToField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ResentToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ResentToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ResentToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "Resent-To: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end end end mail-2.8.1/spec/mail/fields/return_path_field_spec.rb000066400000000000000000000031761436372131700226410ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::ReturnPathField do it "should allow you to specify a field" do rp = Mail::ReturnPathField.new('mikel@test.lindsaar.net') expect(rp.address).to eq 'mikel@test.lindsaar.net' end it "should encode the addr_spec in <>" do rp = Mail::ReturnPathField.new('mikel@test.lindsaar.net') expect(rp.encoded).to eq "Return-Path: \r\n" end it "should accept <>" do rp = Mail::ReturnPathField.new('<>') expect(rp.encoded).to eq "Return-Path: <>\r\n" end it "should set the return path" do mail = Mail.new do to "to@someemail.com" from "from@someemail.com" subject "Can't set the return-path" return_path "bounce@someemail.com" message_id "<1234@someemail.com>" body "body" end expect(mail.return_path).to eq "bounce@someemail.com" end it "should set the return path" do mail = Mail.new do to "to@someemail.com" from "from@someemail.com" subject "Can't set the return-path" return_path "bounce@someemail.com" message_id "<1234@someemail.com>" body "body" end encoded_mail = Mail.new(mail.encoded) expect(encoded_mail.return_path).to eq "bounce@someemail.com" end it "should wrap the return path addr_spec in <>" do mail = Mail.new do to "to@someemail.com" from "from@someemail.com" subject "Can't set the return-path" return_path "bounce@someemail.com" message_id "<1234@someemail.com>" body "body" end expect(mail.encoded).to match(//) end end mail-2.8.1/spec/mail/fields/sender_field_spec.rb000066400000000000000000000026161436372131700215640ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' # sender = "Sender:" mailbox CRLF describe Mail::SenderField do let :field do Mail::SenderField.new('Mikel Lindsaar ') end describe "initialization" do it "should initialize" do expect { Mail::SenderField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::SenderField.new('Mikel Lindsaar ') expect(t.name).to eq 'Sender' expect(t.value).to eq 'Mikel Lindsaar ' end it "should reject headers with multiple mailboxes" do pending 'Sender accepts an address list now, but should only accept a single address' expect { Mail::SenderField.new('Mikel Lindsaar , "Bob Smith" ') }.to raise_error(Mail::Field::ParseError) end end it "formats the sender" do expect(field.formatted).to eq ['Mikel Lindsaar '] end it "parses a single sender address" do expect(field.address).to eq 'mikel@test.lindsaar.net' end it "returns the field value" do expect(field.value).to eq 'Mikel Lindsaar ' end it "encodes a header line" do expect(field.encoded).to eq "Sender: Mikel Lindsaar \r\n" end end mail-2.8.1/spec/mail/fields/structured_field_spec.rb000066400000000000000000000032621436372131700225060ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::StructuredField do describe "initialization" do it "should be instantiated" do expect {Mail::StructuredField.new("From", "bob@me.com")}.not_to raise_error end end describe "manipulation" do before(:each) do @field = Mail::StructuredField.new("From", "bob@me.com") end it "should allow us to set a text value at initialization" do expect{Mail::StructuredField.new("From", "bob@me.com")}.not_to raise_error end it "should provide access to the text of the field once set" do expect(@field.value).to eq "bob@me.com" end it "should provide a means to change the value" do @field.value = "bob@you.com" expect(@field.value).to eq "bob@you.com" end end describe "displaying encoded field and decoded value" do before(:each) do @field = Mail::FromField.new("bob@me.com") end it "should provide a to_s function that returns the decoded string" do expect(@field.to_s).to eq "bob@me.com" end it "should return '' on to_s if there is no value" do @field.value = nil expect(@field.encoded).to eq '' end it "should give an encoded value ready to insert into an email" do expect(@field.encoded).to eq "From: bob@me.com\r\n" end it "should return an empty string on encoded if it has no value" do @field.value = nil expect(@field.encoded).to eq '' end it "should return the field name and value in proper format when called to_s" do expect(@field.encoded).to eq "From: bob@me.com\r\n" end end end mail-2.8.1/spec/mail/fields/to_field_spec.rb000066400000000000000000000107511436372131700207250ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::ToField do # # The "To:" field contains the address(es) of the primary recipient(s) # of the message. describe "initialization" do it "should initialize" do expect { Mail::ToField.new("Mikel") }.not_to raise_error end it "should accept a string without the field name" do t = Mail::ToField.new('Mikel Lindsaar , "Bob Smith" ') expect(t.name).to eq 'To' expect(t.value).to eq 'Mikel Lindsaar , "Bob Smith" ' end end describe "instance methods" do it "should return an address" do t = Mail::ToField.new('Mikel Lindsaar ') expect(t.formatted).to eq ['Mikel Lindsaar '] end it "should return two addresses" do t = Mail::ToField.new('Mikel Lindsaar , Ada Lindsaar ') expect(t.formatted.first).to eq 'Mikel Lindsaar ' expect(t.addresses.last).to eq 'ada@test.lindsaar.net' end it "should return one address and a group" do t = Mail::ToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses[0]).to eq 'sam@me.com' expect(t.addresses[1]).to eq 'mikel@me.com' expect(t.addresses[2]).to eq 'bob@you.com' end it "should return the formatted line on to_s" do t = Mail::ToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.value).to eq 'sam@me.com, my_group: mikel@me.com, bob@you.com;' end it "should return the encoded line" do t = Mail::ToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.encoded).to eq "To: sam@me.com, \r\n\smy_group: mikel@me.com, \r\n\sbob@you.com;\r\n" end it "should return the decoded line" do t = Mail::ToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.decoded).to eq "sam@me.com, my_group: mikel@me.com, bob@you.com;" end it "should get multiple address out from a group list" do t = Mail::ToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;') expect(t.addresses).to eq ["sam@me.com", "mikel@me.com", "bob@you.com"] end it "should handle commas in the address" do t = Mail::ToField.new('"Long, stupid email address" ') expect(t.addresses).to eq ["mikel@test.lindsaar.net"] end it "should handle commas in the address for multiple fields" do t = Mail::ToField.new('"Long, stupid email address" , "Another, really, really, long, stupid email address" ') expect(t.addresses).to eq ["mikel@test.lindsaar.net", "bob@test.lindsaar.net"] end end describe "unicode address" do it "should allow unicode local part jp" do t = Mail::ToField.new('Mikel Lindsár <マイケル@test.lindsaar.net>') expect(t.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPDoXI=?= <=?UTF-8?B?44Oe44Kk44Kx44Or?=@test.lindsaar.net>\r\n" expect(t.display_names).to eq ['Mikel Lindsár'] expect(t.addresses).to eq ['マイケル@test.lindsaar.net'] expect(t.addrs.first.local).to eq 'マイケル' end it "should allow unicode local" do t = Mail::ToField.new('"Mikel Lindsár" ') expect(t.encoded).to eq "To: =?UTF-8?B?TWlrZWwgTGluZHPDoXI=?= <=?UTF-8?B?bGluZHPDpHI=?=@test.com>\r\n" expect(t.display_names).to eq ['Mikel Lindsár'] expect(t.addrs.first.address).to eq 'lindsär@test.com' end it "should allow unicode local (simple)" do t = Mail::ToField.new('ölsen@ms.com') expect(t.encoded).to eq "To: =?UTF-8?B?w7Zsc2Vu?=@ms.com\r\n" end it "should allow unicode local (complex)" do t = Mail::ToField.new('<"mik@test.<æ>"@ms.com>') expect(t.encoded).to eq "To: =?UTF-8?B?Im1pa0B0ZXN0LjzDpj4i?=@ms.com\r\n" expect(t.addrs.first.local).to eq '"mik@test.<æ>"' end it "should allow emoji local" do t = Mail::ToField.new(', 😍@me.eu') expect(t.encoded).to eq "To: =?UTF-8?B?8J+YjQ==?=@me.eu\r\n" end end it "should not crash if it can't understand a name" do t = Mail.new('To: <"Undisclosed-Recipient:"@msr19.hinet.net;>') expect { t.encoded }.not_to raise_error expect(t.encoded).to match(/To\:\s<"Undisclosed\-Recipient\:"@msr19\.hinet\.net;>\r\n/) end end mail-2.8.1/spec/mail/fields/unstructured_field_spec.rb000066400000000000000000000270451436372131700230560ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::UnstructuredField do describe "initialization" do it "should be instantiated" do expect {Mail::UnstructuredField.new("Name", "Value")}.not_to raise_error end end describe "manipulation" do before(:each) do @field = Mail::UnstructuredField.new("Subject", "Hello Frank") end it "should allow us to set a text value at initialization" do expect {Mail::UnstructuredField.new("Subject", "Value")}.not_to raise_error end it "should provide access to the text of the field once set" do expect(@field.value).to eq "Hello Frank" end it "should provide a means to change the value" do @field.value = "Goodbye Frank" expect(@field.value).to eq "Goodbye Frank" end end describe "displaying encoded field and decoded value" do before(:each) do @field = Mail::UnstructuredField.new("Subject", "Hello Frank") end it "should provide a to_s function that returns the field name and value" do expect(@field.value).to eq "Hello Frank" end it "should return '' on to_s if there is no value" do @field.value = nil expect(@field.to_s).to eq '' end it "should give an encoded value ready to insert into an email" do expect(@field.encoded).to eq "Subject: Hello Frank\r\n" end it "should return nil on encoded if it has no value" do @field.value = nil expect(@field.encoded).to eq '' end it "should handle array" do @field = Mail::UnstructuredField.new("To", ['mikel@example.com', 'bob@example.com']) expect(@field.encoded).to eq "To: mikel@example.com, bob@example.com\r\n" end it "should handle string" do @field.value = 'test' expect(@field.encoded).to eq "Subject: test\r\n" end it "should give an decoded value ready to insert into an email" do expect(@field.decoded).to eq "Hello Frank" end it "should return a nil on decoded if it has no value" do @field.value = nil expect(@field.decoded).to be_nil end it "should just add the CRLF at the end of the line" do @field = Mail::SubjectField.new("=?utf-8?Q?testing_testing_=D6=A4?=") result = "Subject: =?UTF-8?Q?testing_testing_=D6=A4?=\r\n" expect(@field.encoded).to eq result expect(@field.decoded).to eq "testing testing \326\244" end it "should do encoded-words encoding correctly without extra equal sign" do @field = Mail::SubjectField.new("testing testing æøå") result = "Subject: =?UTF-8?Q?testing_testing_=C3=A6=C3=B8=C3=A5?=\r\n" expect(@field.encoded).to eq result expect(@field.decoded).to eq "testing testing æøå" end it "should encode the space between two adjacent encoded-words" do @field = Mail::SubjectField.new("Her er æ ø å") result = "Subject: =?UTF-8?Q?Her_er_=C3=A6_=C3=B8_=C3=A5?=\r\n" expect(@field.encoded).to eq result expect(@field.decoded).to eq "Her er æ ø å" end it "should encode additional special characters inside encoded-word-encoded strings" do string = %Q(Her er æ()<>@,;:\\"/[]?.=) @field = Mail::SubjectField.new(string) result = %Q(Subject: =?UTF-8?Q?Her_er_=C3=A6=28=29<>@,;:\\=22/[]=3F.=3D?=\r\n) expect(@field.encoded).to eq result expect(@field.decoded).to eq string end it "should decode a utf-7(B) encoded unstructured field" do string = "=?UTF-7?B?JkFPUS0mLSZBT1EtJi0mQU9RLQ==?=" @field = Mail::UnstructuredField.new("References", string) expect(@field.decoded).to eq 'ä&ä&ä' end end describe "folding" do it "should not fold itself if it is 78 chracters long" do @field = Mail::UnstructuredField.new("Subject", "This is a subject header message that is _exactly_ 78 characters....") expect(@field.encoded).to eq "Subject: This is a subject header message that is _exactly_ 78 characters....\r\n" end it "should fold itself if it is 79 chracters long" do @field = Mail::UnstructuredField.new("Subject", "This is a subject header message that is absolutely 79 characters long") result = "Subject: This is a subject header message that is absolutely 79 characters\r\n\slong\r\n" expect(@field.encoded).to eq result end it "should fold itself if it is 997 chracters long" do @field = Mail::UnstructuredField.new("Subject", "This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. This is a subject header message that is going to be 997 characters long. And this makes it 997....") lines = @field.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 78 } end it "should fold itself if it is 998 characters long" do value = "This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. This is a subject header message that is going to be 998 characters long. And this makes it 998 long" @field = Mail::UnstructuredField.new("Subject", value) lines = @field.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 78 } end it "should fold itself if it is 999 characters long" do value = "This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. This is a subject header message that is going to be 999 characters long. And this makes it 999 long." @field = Mail::UnstructuredField.new("Subject", value) lines = @field.encoded.split("\r\n\s") lines.each { |line| expect(line.length).to be < 78 } end it "should fold itself if it is non us-ascii" do string = "This is あ really long string This is あ really long string This is あ really long string This is あ really long string This is あ really long string" @field = Mail::UnstructuredField.new("Subject", string) string = string.dup.force_encoding('UTF-8') result = "Subject: =?UTF-8?Q?This_is_=E3=81=82_really_long_string_This_is_=E3=81=82?=\r\n\s=?UTF-8?Q?_really_long_string_This_is_=E3=81=82_really_long_string_This_is?=\r\n\s=?UTF-8?Q?_=E3=81=82_really_long_string_This_is_=E3=81=82_really_long?=\r\n\s=?UTF-8?Q?_string?=\r\n" expect(@field.encoded).to eq result expect(@field.decoded).to eq string end it "should fold properly with my actual complicated header" do string = %|{"unique_args": {"mailing_id":147,"account_id":2}, "to": ["larspind@gmail.com"], "category": "mailing", "filters": {"domainkeys": {"settings": {"domain":1,"enable":1}}}, "sub": {"{{open_image_url}}": ["http://betaling.larspind.local/O/token/147/Mailing::FakeRecipient"], "{{name}}": ["[FIRST NAME]"], "{{signup_reminder}}": ["(her kommer til at stå hvornår folk har skrevet sig op ...)"], "{{unsubscribe_url}}": ["http://betaling.larspind.local/U/token/147/Mailing::FakeRecipient"], "{{email}}": ["larspind@gmail.com"], "{{link:308}}": ["http://betaling.larspind.local/L/308/0/Mailing::FakeRecipient"], "{{confirm_url}}": [""], "{{ref}}": ["[REF]"]}}| @field = Mail::UnstructuredField.new("X-SMTPAPI", string) string = string.dup.force_encoding('UTF-8') result = "X-SMTPAPI: =?UTF-8?Q?{=22unique=5Fargs=22:_{=22mailing=5Fid=22:147,=22a?=\r\n =?UTF-8?Q?ccount=5Fid=22:2},_=22to=22:_[=22larspind@gmail.com=22],_=22categ?=\r\n =?UTF-8?Q?ory=22:_=22mailing=22,_=22filters=22:_{=22domainkeys=22:_{=22sett?=\r\n =?UTF-8?Q?ings=22:_{=22domain=22:1,=22enable=22:1}}},_=22sub=22:_{=22{{op?=\r\n =?UTF-8?Q?en=5Fimage=5Furl}}=22:_[=22http://betaling.larspind.local/O?=\r\n =?UTF-8?Q?/token/147/Mailing::FakeRecipient=22],_=22{{name}}=22:_[=22[FIRST?=\r\n =?UTF-8?Q?_NAME]=22],_=22{{signup=5Freminder}}=22:_[=22=28her_kommer_til_at?=\r\n =?UTF-8?Q?_st=C3=A5_hvorn=C3=A5r_folk_har_skrevet_sig_op_...=29=22],?=\r\n =?UTF-8?Q?_=22{{unsubscribe=5Furl}}=22:_[=22http://betaling.larspind.?=\r\n =?UTF-8?Q?local/U/token/147/Mailing::FakeRecipient=22],_=22{{email}}=22:?=\r\n =?UTF-8?Q?_[=22larspind@gmail.com=22],_=22{{link:308}}=22:_[=22http://beta?=\r\n =?UTF-8?Q?ling.larspind.local/L/308/0/Mailing::FakeRecipient=22],_=22{{con?=\r\n =?UTF-8?Q?firm=5Furl}}=22:_[=22=22],_=22{{ref}}=22:_[=22[REF]=22]}}?=\r\n" expect(@field.encoded).to eq result expect(@field.decoded).to eq string end it "should fold properly with continuous spaces around the linebreak" do @field = Mail::UnstructuredField.new("Subject", "This is a header that has continuous spaces around line break point, which should be folded properly") result = "Subject: This is a header that has continuous spaces around line break point,\s\r\n\s\s\s\swhich should be folded properly\r\n" expect(@field.encoded).to eq result end end describe "encoding non QP safe chars" do it "should encode an ascii string that has carriage returns if asked to" do result = "Subject: =0Aasdf=0A\r\n" @field = Mail::UnstructuredField.new("Subject", "\nasdf\n") expect(@field.encoded).to eq result end end describe "iso-2022-jp Subject" do it "should encoded with ISO-2022-JP encoding" do @field = Mail::UnstructuredField.new("Subject", "あいうえお") @field.charset = 'iso-2022-jp' expect(@field.encoded).to eq "Subject: =?ISO-2022-JP?Q?=1B$B$=22$$$&$=28$*=1B=28B?=\r\n" end end end mail-2.8.1/spec/mail/header_spec.rb000066400000000000000000000645101436372131700171240ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Header do describe "initialization" do it "should instantiate empty" do expect { Mail::Header.new }.not_to raise_error end it "should instantiate with a string passed in" do expect { Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") }.not_to raise_error end end describe "copying" do it "should instantiate with a string passed in" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") copy = header.dup expect(copy.to_a).to eq(header.to_a) expect(copy[:to]).to eq(header[:to]) end end describe "instance methods" do it "should save away the raw source of the header that it is passed" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header.raw_source).to eq "To: Mikel\r\nFrom: bob\r\n" end it "should say if it has a message_id field defined" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header).not_to be_has_message_id end it "should say if it has a message_id field defined" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\nMessage-ID: 1234") expect(header).to be_has_message_id end it "should say if it has a content_id field defined" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header).not_to be_has_content_id end it "should say if it has a content_id field defined" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\nContent-ID: <1234@me.com>") expect(header).to be_has_content_id end it "should know its own charset" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\nContent-ID: <1234@me.com>") expect(header.charset).to be_nil end it "should know its own charset if set" do header = Mail::Header.new header['content-type'] = 'text/plain; charset=utf-8' expect(header.charset).to eq 'utf-8' end it "should not unset previously set charset if content-type is set without charset" do header = Mail::Header.new(nil, 'utf-8') header['content-type'] = 'text/plain' expect(header.charset).to eq 'utf-8' end it "shouldn't die when queried for a charset and the content-type header is invalid" do header = Mail::Header.new header['Content-Type'] = 'invalid/invalid; charset="iso-8859-1"' expect { header.charset }.not_to raise_error end it "should be Enumerable" do header = Mail::Header.new("To: James Random\r\nFrom: Santa Claus\r\n") expect(header.find {|f| f.responsible_for?('From') }).to be_a(Mail::Field) end end describe "creating fields" do it "should recognise a bcc field" do header = Mail::Header.new header['bcc'] = 'mikel@test.lindsaar.net' expect(header['bcc'].field.class).to eq Mail::BccField end it "should recognise a cc field" do header = Mail::Header.new header['cc'] = 'mikel@test.lindsaar.net' expect(header['cc'].field.class).to eq Mail::CcField end it "should recognise a content-description field" do header = Mail::Header.new header['content-description'] = 'Text' expect(header['content-description'].field.class).to eq Mail::ContentDescriptionField end it "should recognise a content-disposition field" do header = Mail::Header.new header['content-disposition'] = 'attachment; filename=File' expect(header['content-disposition'].field.class).to eq Mail::ContentDispositionField end it "should recognise an inline content-disposition field" do header = Mail::Header.new header['content-disposition'] = 'inline' expect(header['content-disposition'].field.class).to eq Mail::ContentDispositionField end it "should recognise a content-id field" do header = Mail::Header.new header['content-id'] = '<1234@test.lindsaar.net>' expect(header['content-id'].field.class).to eq Mail::ContentIdField end it "should recognise a content-transfer-encoding field" do header = Mail::Header.new header['content-transfer-encoding'] = '7bit' expect(header['content-transfer-encoding'].field.class).to eq Mail::ContentTransferEncodingField end it "should recognise a content-type field" do header = Mail::Header.new header['content-type'] = 'text/plain' expect(header['content-type'].field.class).to eq Mail::ContentTypeField end it "should recognise a date field" do header = Mail::Header.new header['date'] = 'Fri, 21 Nov 1997 09:55:06 -0600' expect(header['date'].field.class).to eq Mail::DateField end it "should recognise a from field" do header = Mail::Header.new header['from'] = 'mikel@test.lindsaar.net' expect(header['from'].field.class).to eq Mail::FromField end it "should recognise a in-reply-to field" do header = Mail::Header.new header['in-reply-to'] = '<1234@test.lindsaar.net>' expect(header['in-reply-to'].field.class).to eq Mail::InReplyToField end it "should recognise a keywords field" do header = Mail::Header.new header['keywords'] = 'mikel test lindsaar net' expect(header['keywords'].field.class).to eq Mail::KeywordsField end it "should recognise a message-id field" do header = Mail::Header.new header['message-id'] = '<1234@test.lindsaar.net>' expect(header['message-id'].field.class).to eq Mail::MessageIdField end it "should recognise a mime-version field" do header = Mail::Header.new header['mime-version'] = '1.0' expect(header['mime-version'].field.class).to eq Mail::MimeVersionField end it "should recognise a received field" do header = Mail::Header.new header['received'] = 'from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id C1B953B4CB6 for ; Tue, 10 May 2005 15:27:05 -0500' expect(header['received'].field.class).to eq Mail::ReceivedField end it "should recognise a references field" do header = Mail::Header.new header['references'] = '<1234@test.lindsaar.net>' expect(header['references'].field.class).to eq Mail::ReferencesField end it "should recognise a reply-to field" do header = Mail::Header.new header['reply-to'] = 'mikel@test.lindsaar.net' expect(header['reply-to'].field.class).to eq Mail::ReplyToField end it "should recognise a resent-bcc field" do header = Mail::Header.new header['resent-bcc'] = 'mikel@test.lindsaar.net' expect(header['resent-bcc'].field.class).to eq Mail::ResentBccField end it "should recognise a resent-cc field" do header = Mail::Header.new header['resent-cc'] = 'mikel@test.lindsaar.net' expect(header['resent-cc'].field.class).to eq Mail::ResentCcField end it "should recognise a resent-date field" do header = Mail::Header.new header['resent-date'] = 'Fri, 21 Nov 1997 09:55:06 -0600' expect(header['resent-date'].field.class).to eq Mail::ResentDateField end it "should recognise a resent-from field" do header = Mail::Header.new header['resent-from'] = 'mikel@test.lindsaar.net' expect(header['resent-from'].field.class).to eq Mail::ResentFromField end it "should recognise a resent-message-id field" do header = Mail::Header.new header['resent-message-id'] = '<1234@mail.baci.local>' expect(header['resent-message-id'].field.class).to eq Mail::ResentMessageIdField end it "should recognise a resent-sender field" do header = Mail::Header.new header['resent-sender'] = 'mikel@test.lindsaar.net' expect(header['resent-sender'].field.class).to eq Mail::ResentSenderField end it "should recognise a resent-to field" do header = Mail::Header.new header['resent-to'] = 'mikel@test.lindsaar.net' expect(header['resent-to'].field.class).to eq Mail::ResentToField end it "should recognise a return-path field" do header = Mail::Header.new header['return-path'] = '' expect(header['return-path'].field.class).to eq Mail::ReturnPathField end it "should recognise a sender field" do header = Mail::Header.new header['sender'] = 'mikel@test.lindsaar.net' expect(header['sender'].field.class).to eq Mail::SenderField end it "should recognise a to field" do header = Mail::Header.new header['to'] = 'mikel@test.lindsaar.net' expect(header['to'].field.class).to eq Mail::ToField end it "should maintain header case" do header = Mail::Header.new header['User-Agent'] = 'My funky mailer' expect(header.encoded).to match(/^User-Agent: /) expect(header.encoded).not_to match(/^user-agent: /) end it "should not accept field names containing colons" do expect { Mail::Header.new['a:b'] = 'c' }.to raise_error(ArgumentError) end end describe "parsing" do it "should split the header into separate fields" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header.fields.length).to eq 2 end it "should not split a wrapped header in two" do header = Mail::Header.new("To: mikel lindsaar\r\n\s\r\nFrom: bob\r\nSubject: This is\r\n a long\r\n\s \t \t \t badly formatted \r\n \t\t \t field") expect(header.fields.length).to eq 3 end # Header fields are lines composed of a field name, followed by a colon # (":"), followed by a field body, and terminated by CRLF. A field # name MUST be composed of printable US-ASCII characters (i.e., # characters that have values between 33 and 126, inclusive), except # colon. it "should accept any valid header field name" do test_name = ascii.reject { |c| c == ':' }.join expect { Mail::Header.new("#{test_name}: This is a crazy name") }.not_to raise_error end it "should not try to accept colons in header field names" do header = Mail::Header.new("Colon:in:header: oops") expect(header.fields.size).to eq 1 expect(header.fields.first.name).to eq 'Colon' expect(header['Colon'].value).to eq 'in:header: oops' end # A field body may be composed of any US-ASCII characters, # except for CR and LF. However, a field body may contain CRLF when # used in header "folding" and "unfolding" as described in section # 2.2.3. it "should accept any valid header field value" do test_value = ascii.reject { |c| c == ':' } test_value << ' ' test_value << '\r\n' expect {Mail::Header.new("header: #{test_value}")}.not_to raise_error end it "should split each field into an name and value" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header.fields[0].name).to eq "From" expect(header.fields[0].value).to eq "bob" expect(header.fields[1].name).to eq "To" expect(header.fields[1].value).to eq "Mikel" end it "should split each field into an name and value - even if whitespace is missing" do header = Mail::Header.new("To: Mikel\r\nFrom:bob\r\n") expect(header.fields[0].name).to eq "From" expect(header.fields[0].value).to eq "bob" expect(header.fields[1].name).to eq "To" expect(header.fields[1].value).to eq "Mikel" end it "should preserve the order of the fields it is given" do header = Mail::Header.new header.fields = ['From: mikel@me.com', 'To: bob@you.com', 'Subject: This is a badly formed email'] expect(header.fields[0].name).to eq 'From' expect(header.fields[1].name).to eq 'To' expect(header.fields[2].name).to eq 'Subject' end it "should allow you to reference each field and value by literal string name" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header['To'].value).to eq "Mikel" expect(header['From'].value).to eq "bob" end it "should return an array of fields if there is more than one match" do header = Mail::Header.new header.fields = ['From: mikel@me.com', 'X-Mail-SPAM: 15', 'X-Mail-SPAM: 23'] expect(header['X-Mail-SPAM'].map { |x| x.value }).to eq ['15', '23'] end it "should return nil if no value in the header" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") expect(header['Subject']).to be_nil end it "should add a new field if the field does not exist" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") header['Subject'] = "G'Day!" expect(header['Subject'].value).to eq "G'Day!" end it "should allow you to pass in an array of raw fields" do header = Mail::Header.new header.fields = ['From: mikel@test.lindsaar.net', 'To: bob@you.com'] expect(header['To'].value).to eq 'bob@you.com' expect(header['From'].value).to eq 'mikel@test.lindsaar.net' end it "should reset the value of a single-only field if it already exists" do header = Mail::Header.new("To: Mikel\r\nFrom: bob\r\n") header['To'] = 'George' expect(header['To'].value).to eq "George" end it "should allow you to delete a field by setting it to nil" do header = Mail::Header.new header.fields = ['To: bob@you.com'] expect(header.fields.length).to eq 1 header['To'] = nil expect(header.fields.length).to eq 0 end it "should delete all matching fields found if there are multiple options" do header = Mail::Header.new header.fields = ['X-SPAM: 1000', 'X-SPAM: 20'] header['X-SPAM'] = nil expect(header.fields.length).to eq 0 end it "should delete only matching fields found" do header = Mail::Header.new header.fields = ['X-SPAM: 1000', 'X-AUTHOR: Steve'] header['X-SPAM'] = nil expect(header['X-AUTHOR']).not_to be_nil expect(header.fields.length).to eq 1 end # Handle empty X-Optional header from Microsoft Exchange it "should handle an empty X-* header value" do header = Mail::Header.new("X-MS-TNEF-Correlator:\r\n") expect(header.fields.length).to eq 1 expect(header['X-MS-TNEF-Correlator'].decoded).to be_nil expect(header['X-MS-TNEF-Correlator'].encoded).to eq "X-MS-TNEF-Correlator: \r\n" end it "should accept X- option fields from MS-Exchange" do header = Mail::Header.new("X-Ms-Has-Attach:\r\nX-MS-TNEF-Correlator: \r\n") expect(header.fields.length).to eq 2 expect(header['X-Ms-Has-Attach'].decoded).to be_nil expect(header['X-Ms-Has-Attach'].encoded).to eq "X-Ms-Has-Attach: \r\n" expect(header['X-MS-TNEF-Correlator'].decoded).to be_nil expect(header['X-MS-TNEF-Correlator'].encoded).to eq "X-MS-TNEF-Correlator: \r\n" end it "should return nil if asked for the value of a non existent field" do header = Mail::Header.new expect(header['Bobs-Field']).to be_nil end it "should allow you to replace a from field" do header = Mail::Header.new expect(header['From']).to be_nil header['From'] = 'mikel@test.lindsaar.net' expect(header['From'].decoded).to eq 'mikel@test.lindsaar.net' header['From'] = 'bob@test.lindsaar.net' expect(header['From'].decoded).to eq 'bob@test.lindsaar.net' end it "should maintain the class of the field" do header = Mail::Header.new header['From'] = 'mikel@test.lindsaar.net' expect(header['From'].field.class).to eq Mail::FromField header['From'] = 'bob@test.lindsaar.net' expect(header['From'].field.class).to eq Mail::FromField end end describe "folding and unfolding" do it "should unfold a header" do header = Mail::Header.new("To: Mikel,\r\n Lindsaar, Bob") expect(header['To'].value).to eq 'Mikel, Lindsaar, Bob' end it "should preserve whitespace when unfolding a header" do header = Mail::Header.new("To: Mikel,\r\n\t Lindsaar, Bob") expect(header['To'].value).to eq "Mikel,\t Lindsaar, Bob" end it "should handle a crazy long folded header" do header = Mail::Header.new(<) id 1K4JeQ-0005Nd-Ij for support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700 HERE expect(header['Received'].value).to eq "from [127.0.220.158] (helo=fg-out-1718.google.com)\tby smtp.totallyrandom.com with esmtp (Exim 4.68)\t(envelope-from )\tid 1K4JeQ-0005Nd-Ij\tfor support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700" end it "should convert all lonesome LFs to CRLF" do header = Mail::Header.new(<) id 1K4JeQ-0005Nd-Ij for support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700 HERE expect(header['Received'].value).to eq "from [127.0.220.158] (helo=fg-out-1718.google.com)\tby smtp.totallyrandom.com with esmtp (Exim 4.68)\t(envelope-from )\tid 1K4JeQ-0005Nd-Ij\tfor support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700" end it "should convert all lonesome LFs to CRLF in UTF-8 too" do header = Mail::Header.new(<) id 1K4JeQ-0005Nd-Ij for support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700 HERE expect(header['Received'].value).to eq "from [127.0.220.158] (helo=fg-out-1718.google.com)\tby smtp.totallyrandom.com with esmtp (Exim 4.68)\t(envelope-from )\tid 1K4JeQ-0005Nd-Ij\tfor support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700" end it "should convert all lonesome CRs to CRLF" do header = Mail::Header.new(<) id 1K4JeQ-0005Nd-Ij for support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700 HERE expect(header['Received'].value).to eq "from [127.0.220.158] (helo=fg-out-1718.google.com)\tby smtp.totallyrandom.com with esmtp (Exim 4.68)\t(envelope-from )\tid 1K4JeQ-0005Nd-Ij\tfor support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700" end end describe "error handling" do it "should collect up any of its fields' errors" do header = Mail::Header.new("Content-Transfer-Encoding: vl@d\r\nReply-To: a b b") expect(Mail::Utilities.blank?(header.errors)).not_to be_truthy expect(header.errors.size).to eq 2 expect(header.errors[0][0]).to eq 'Reply-To' expect(header.errors[0][1]).to eq 'a b b' expect(header.errors[1][0]).to eq 'Content-Transfer-Encoding' expect(header.errors[1][1]).to eq 'vl@d' end end describe "handling date fields with multiple values" do it "should know which fields can only appear once" do %w[ date ].each do |field| header = Mail::Header.new header[field] = "Thu, 05 Jun 2008 10:53:29 -0700" header[field] = "Mon, 15 Nov 2010 11:05:29 -1100" expect(header[field].value).to eq "Mon, 15 Nov 2010 11:05:29 -1100" end end it "should know which fields can only appear once" do %w[ from sender reply-to to cc bcc ].each do |field| header = Mail::Header.new header[field] = "mikel@test.lindsaar.net" header[field] = "ada@test.lindsaar.net" expect(header[field].value).to eq "ada@test.lindsaar.net" end end it "should enforce appear-once rule even with mass assigned header" do header = Mail::Header.new( "Content-Type: multipart/alternative\nContent-Type: text/plain\n" ) expect(header['content-type']).not_to be_kind_of(Array) end it "should add additional fields that can appear more than once" do %w[ comments keywords x-spam].each do |field| header = Mail::Header.new header[field] = "1234" header[field] = "5678" expect(header[field].map { |x| x.value }).to eq ["1234", "5678"] end end it "should delete all references to a field" do header = Mail::Header.new header.fields = ['X-Mail-SPAM: 15', 'X-Mail-SPAM: 20'] header['X-Mail-SPAM'] = '10000' expect(header['X-Mail-SPAM'].map { |x| x.value }).to eq ['15', '20', '10000'] header['X-Mail-SPAM'] = nil expect(header['X-Mail-SPAM']).to be_nil end end describe "handling trace fields" do before(:each) do trace_header =< Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ; Sun, 8 May 2005 12:30:23 -0500 Received: from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id j48HUC213279 for ; Sun, 8 May 2005 12:30:13 -0500 Received: from conversion-xxx.xxxx.xxx.net by xxx.xxxx.xxx id <0IG600901LQ64I@xxx.xxxx.xxx> for ; Sun, 8 May 2005 12:30:12 -0500 Received: from agw1 by xxx.xxxx.xxx with ESMTP id <0IG600JFYLYCAxxx@xxxx.xxx> for ; Sun, 8 May 2005 12:30:12 -0500 TRACEHEADER @traced_header = Mail::Header.new(trace_header) end it "should instantiate one trace field object per header" do expect(@traced_header.fields.length).to eq 5 end it "should add a new received header after the other received headers if they exist" do @traced_header['To'] = "Mikel" @traced_header['Received'] = "from agw2 by xxx.xxxx.xxx; Sun, 8 May 2005 12:30:13 -0500" expect(@traced_header.fields[0].addresses).to eq ['xxx@xxxx.xxxtest'] expect(@traced_header.fields[1].info).to eq 'from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id 6AAEE3B4D23 for ' expect(@traced_header.fields[2].info).to eq 'from xxx.xxxx.xxx by xxx.xxxx.xxx with ESMTP id j48HUC213279 for ' expect(@traced_header.fields[3].info).to eq 'from conversion-xxx.xxxx.xxx.net by xxx.xxxx.xxx id <0IG600901LQ64I@xxx.xxxx.xxx> for ' expect(@traced_header.fields[5].info).to eq "from agw2 by xxx.xxxx.xxx" expect(@traced_header.fields[6].field.class).to eq Mail::ToField end end describe "encoding" do it "should output a parsed version of itself to US-ASCII on encoded and tidy up and sort correctly" do encoded = Mail::Header.new("To: Mikel\r\n\sLindsaar \r\nFrom: bob\r\n\s\r\nSubject: This is\r\n a long\r\n\s \t \t \t badly formatted \r\n \t\t \t field").encoded result = "From: bob \r\nTo: Mikel Lindsaar \r\nSubject: This is a long badly formatted \r\n field\r\n" if result.respond_to?(:encode!) result = result.dup.encode!(::Encoding::US_ASCII) expect(encoded.encoding).to eq ::Encoding::US_ASCII if encoded.respond_to?(:encoding) end expect(encoded).to eq result end if '1.9'.respond_to?(:force_encoding) it "should not blow up on encoding mismatches" do junk = "Subject: \xAF".dup.force_encoding(Encoding::ASCII_8BIT) header = Mail::Header.new(junk, 'utf-8') expect(header.encoded).to eq("Subject: =?UTF-8?Q?=EF=BF=BD?=\r\n") end end end describe "detecting required fields" do it "should not say it has a message id if it doesn't" do expect(Mail::Header.new).not_to be_has_message_id end it "should say it has a message id if it does" do expect(Mail::Header.new('Message-ID: 1234')).to be_has_message_id end it "should not say it has a date if it doesn't" do expect(Mail::Header.new).not_to be_has_date end it "should say it has a date id if it does" do expect(Mail::Header.new('Date: Mon, 24 Nov 1997 14:22:01 -0800')).to be_has_date end it "should not say it has a mime-version if it doesn't" do expect(Mail::Header.new).not_to be_has_mime_version end it "should say it has a date id if it does" do expect(Mail::Header.new('Mime-Version: 1.0')).to be_has_mime_version end end describe "mime version handling" do it "should return the mime version of the email" do header = Mail::Header.new("Mime-Version: 1.0") expect(header['mime-version'].value).to eq '1.0' end it "should return nil if no mime-version header field" do header = Mail::Header.new('To: bob') expect(header['mime_version']).to be_nil end it "should return the transfer-encoding of the email" do header = Mail::Header.new("Content-Transfer-Encoding: Base64") expect(header['content-transfer-encoding'].value).to eq 'Base64' end it "should return nil if no transfer-encoding header field" do header = Mail::Header.new expect(header['content-transfer-encoding']).to be_nil end it "should return the content-description of the email" do header = Mail::Header.new("Content-Description: This is a description") expect(header['Content-Description'].value).to eq 'This is a description' end it "should return nil if no content-description header field" do header = Mail::Header.new expect(header['Content-Description']).to be_nil end end describe "configuration option .maximum_amount" do it "should be 1000 by default" do expect(Mail::Header.maximum_amount).to eq(1000) end it "should limit amount of parsed headers" do Mail::Header.maximum_amount, old_max = 10, Mail::Header.maximum_amount $VERBOSE, old_verbose = nil, $VERBOSE begin expect(Kernel).to receive(:warn).with(match(/10 header fields/)) header = Mail::Header.new("X-SubscriberID: 345\n" * 11) expect(header.fields.size).to eq(10) ensure $VERBOSE = old_verbose Mail::Header.maximum_amount = old_max end end end end mail-2.8.1/spec/mail/mail_spec.rb000066400000000000000000000017641436372131700166200ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "mail" do it "should be able to be instantiated" do expect { Mail }.not_to raise_error end it "should be able to make a new email" do expect(Mail.new.class).to eq Mail::Message end it "should accept headers and body" do # Full tests in Message Spec message = Mail.new do from 'mikel@me.com' to 'mikel@you.com' subject 'Hello there Mikel' body 'This is a body of text' end expect(message.from).to eq ['mikel@me.com'] expect(message.to).to eq ['mikel@you.com'] expect(message.subject).to eq 'Hello there Mikel' expect(message.body.to_s).to eq 'This is a body of text' end it "should read a file" do wrap_method = read_fixture('emails', 'plain_emails', 'raw_email.eml').to_s file_method = Mail.new(read_raw_fixture('emails', 'plain_emails', 'raw_email.eml')).to_s expect(wrap_method).to eq file_method end end mail-2.8.1/spec/mail/message_spec.rb000066400000000000000000002724621436372131700173270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Message do def basic_email "To: mikel\r\nFrom: bob\r\nSubject: Hello!\r\n\r\nemail message\r\n" end describe "initialization" do it "should instantiate empty" do expect(Mail::Message.new.class).to eq Mail::Message end it "should return a basic email" do mail = Mail.new mail = Mail.new(mail.to_s) expect(Mail::Utilities.blank?(mail.date)).not_to be_truthy expect(Mail::Utilities.blank?(mail.message_id)).not_to be_truthy expect(mail.mime_version).to eq "1.0" expect(mail.content_type).to eq "text/plain" expect(mail.content_transfer_encoding).to eq "7bit" expect(Mail::Utilities.blank?(mail.subject)).to be_truthy expect(Mail::Utilities.blank?(mail.body)).to be_truthy end it "should instantiate with a string" do expect(Mail::Message.new(basic_email).class).to eq Mail::Message end it "should allow us to pass it a block" do mail = Mail::Message.new do from 'mikel@me.com' to 'lindsaar@you.com' end expect(mail.from).to eq ['mikel@me.com'] expect(mail.to).to eq ['lindsaar@you.com'] end it "should yield self if the given block takes any args" do class ClassThatCreatesMail def initialize(from, to) @from = from @to = to end def create_mail_with_one_arg Mail::Message.new do |m| m.from @from m.to @to end end def create_mail_with_splat_args Mail::Message.new do |*args| m = args.first m.from @from m.to @to end end end mail = ClassThatCreatesMail.new('mikel@me.com', 'lindsaar@you.com').create_mail_with_one_arg expect(mail.from).to eq ['mikel@me.com'] expect(mail.to).to eq ['lindsaar@you.com'] mail = ClassThatCreatesMail.new('mikel@me.com', 'lindsaar@you.com').create_mail_with_splat_args expect(mail.from).to eq ['mikel@me.com'] expect(mail.to).to eq ['lindsaar@you.com'] end it "should initialize a body and header class even if called with nothing to begin with" do mail = Mail::Message.new expect(mail.header.class).to eq Mail::Header expect(mail.body.class).to eq Mail::Body end it "should not report basic emails as bounced" do expect(Mail::Message.new).not_to be_bounced end it "should be able to parse a basic email" do expect { read_fixture('emails', 'plain_emails', 'basic_email.eml') }.not_to raise_error end it "should be able to parse a basic email with linefeeds" do expect { read_fixture('emails', 'plain_emails', 'basic_email_lf.eml') }.not_to raise_error end it "should be able to parse an email with @ in display name" do message = read_fixture('emails', 'plain_emails', 'raw_email_with_at_display_name.eml') expect(message.to).to eq ["smith@gmail.com", "raasdnil@gmail.com", "tom@gmail.com"] end it "should be able to parse an email with only blank lines as body" do expect { read_fixture('emails', 'error_emails', 'missing_body.eml') }.not_to raise_error end it "should be able to parse an email with a funky date header" do # TODO: This spec should actually do something expect { read_fixture('emails', 'error_emails', 'bad_date_header2.eml') } end it 'should be able to invoke subject on a funky subject header' do read_fixture('emails', 'error_emails', 'bad_subject.eml').subject end it 'should use default charset' do begin Mail::Message.default_charset, old = 'iso-8859-1', Mail::Message.default_charset expect(Mail::Message.new.charset).to eq 'iso-8859-1' ensure Mail::Message.default_charset = old end end it 'should be able to parse an email missing an encoding' do read_fixture('emails', 'error_emails', 'must_supply_encoding.eml') end Dir.glob(fixture_path('emails/**/*.eml')).each do |path| it "parses #{path} fixture" do allow(Kernel).to receive(:warn) # Don't want to get noisy about any warnings expect { Mail.read(path) }.to_not raise_error end end it "should be able to parse a large email without raising an exception" do m = Mail.new m.add_file(:filename => "attachment.data", :content => "a" * (8 * 1024 * 1024)) raw_email = "From jamis_buck@byu.edu Mon May 2 16:07:05 2005\r\n#{m.to_s}" expect { Mail::Message.new(raw_email) }.not_to raise_error expect(Mail::Message.new(raw_email).part[0].header[:filename]).to be_nil end it "should not raise a warning on having non US-ASCII characters in the header (should just handle it)" do expect { read_fixture('emails', 'plain_emails', 'raw_email_string_in_date_field.eml') }.to_not output.to_stderr end it "should raise a warning (and keep parsing) on having an incorrectly formatted header" do expect(Kernel).to receive(:warn).with('WARNING: Ignoring unparsable header "quite Delivered-To: xxx@xxx.xxx": invalid header name syntax: "quite Delivered-To"').once read_fixture('emails', 'plain_emails', 'raw_email_incorrect_header.eml').to_s end it "should read in an email message and basically parse it" do mail = read_fixture('emails', 'plain_emails', 'basic_email.eml') expect(mail.to).to eq ["raasdnil@gmail.com"] end it "should not fail parsing message with caps in content_type" do mail = read_fixture('emails', 'plain_emails', 'mix_caps_content_type.eml') expect(mail.content_type).to eq 'text/plain; charset=iso-8859-1' expect(mail.main_type).to eq 'text' expect(mail.sub_type).to eq 'plain' end it "should be able to pass an empty reply-to header" do mail = read_fixture('emails', 'error_emails', 'empty_in_reply_to.eml') expect(Mail::Utilities.blank?(mail.in_reply_to)).to be_truthy end it "should be able to pass two In-Reply-To headers" do mail = Mail.new("From: bob\r\nIn-Reply-To: \r\nIn-Reply-To: \r\nSubject: Hello!\r\n\r\nemail message\r\n") expect(mail.in_reply_to).to eq 'b@b.b' end it "should be able to pass two References headers" do mail = Mail.new("From: bob\r\nReferences: \r\nReferences: \r\nSubject: Hello!\r\n\r\nemail message\r\n") expect(mail.references).to eq 'b@b.b' end describe "YAML serialization" do before(:each) do # Ensure specs don't randomly fail due to messages being generated 1 second apart time = DateTime.now allow(DateTime).to receive(:now).and_return(time) @yaml_mail = Mail::Message.new(:to => 'someone@somewhere.com', :cc => 'someoneelse@somewhere.com', :bcc => 'someonesecret@somewhere.com', :body => 'body', :subject => 'subject') @smtp_settings = { :address=>"smtp.somewhere.net", :port=>"587", :domain=>"somewhere.net", :user_name=>"someone@somewhere.net", :password=>"password", :authentication=>:plain, :enable_starttls_auto => true, :enable_starttls => nil, :openssl_verify_mode => nil, :ssl=>nil, :tls=>nil, :open_timeout=>nil, :read_timeout=>nil } @yaml_mail.delivery_method :smtp, @smtp_settings end it "should serialize the basic information to YAML" do yaml = @yaml_mail.to_yaml yaml_output = Mail::YAML.load(yaml) expect(yaml_output['headers']['To']).to eq "someone@somewhere.com" expect(yaml_output['headers']['Cc']).to eq "someoneelse@somewhere.com" expect(yaml_output['headers']['Subject']).to eq "subject" expect(yaml_output['headers']['Bcc']).to eq "someonesecret@somewhere.com" expect(yaml_output['@body_raw']).to eq "body" expect(Mail::Utilities.blank?(yaml_output['@delivery_method'])).not_to be_truthy end it "should deserialize after serializing" do deserialized = Mail::Message.from_yaml(@yaml_mail.to_yaml) expect(deserialized).to eq @yaml_mail expect(deserialized.delivery_method.settings).to eq @smtp_settings end it "should serialize a Message with a custom delivery_handler" do @yaml_mail.delivery_handler = DeliveryAgent yaml = @yaml_mail.to_yaml yaml_output = Mail::YAML.load(yaml) expect(yaml_output['delivery_handler']).to eq "DeliveryAgent" end it "should load a serialized delivery handler" do @yaml_mail.delivery_handler = DeliveryAgent deserialized = Mail::Message.from_yaml(@yaml_mail.to_yaml) expect(deserialized.delivery_handler).to eq DeliveryAgent end it "should not deserialize a delivery_handler that does not exist" do yaml = @yaml_mail.to_yaml yaml_hash = Mail::YAML.load(yaml) yaml_hash['delivery_handler'] = "NotARealClass" deserialized = Mail::Message.from_yaml(yaml_hash.to_yaml) expect(deserialized.delivery_handler).to be_nil end it "should deserialize parts as an instance of Mail::PartsList" do yaml = @yaml_mail.to_yaml yaml_hash = Mail::YAML.load(yaml) deserialized = Mail::Message.from_yaml(yaml_hash.to_yaml) expect(deserialized.parts).to be_kind_of(Mail::PartsList) end it "should handle multipart mail" do @yaml_mail.add_part Mail::Part.new(:content_type => 'text/html', :body => 'body') deserialized = Mail::Message.from_yaml(@yaml_mail.to_yaml) expect(deserialized).to be_multipart deserialized.parts.each {|part| expect(part).to be_a(Mail::Part)} expect(deserialized.parts.map(&:body)).to eq(['body', 'body']) end end describe "splitting" do it "should split the body from the header" do message = Mail::Message.new("To: Example \r\n\r\nHello there\r\n") expect(message.decoded).to eq("Hello there\n") end it "should split when the body starts with a space" do message = Mail::Message.new("To: Example \r\n\r\n Hello there\r\n") expect(message.decoded).to eq(" Hello there\n") end it "should split if the body starts with an empty line" do message = Mail::Message.new("To: Example \r\n\r\n\r\nHello there\r\n") expect(message.decoded).to eq("\nHello there\n") end it "should split if the body starts with a blank line" do message = Mail::Message.new("To: Example \r\n\r\n\t\r\nHello there\r\n") expect(message.decoded).to eq("\t\nHello there\n") end it 'should split after headers that contain "\r\n "' do message = Mail::Message.new("To: Example\r\n \r\n\r\n Hello there\r\n") expect(message.decoded).to eq(" Hello there\n") end it 'should split only once if there are "\r\n\r\n"s in the body' do message = Mail::Message.new("To: Example \r\n\r\nHello\r\n\r\nthere\r\n") expect(message.decoded).to eq("Hello\n\nthere\n") end it "should allow headers that end in trailing whitespace" do message = Mail::Message.new("To: Example \r\nThread-Topic: -= MAINTENANCE =- Canasta - Wednesday 4/24/2013 8am - 10am\r\n \r\n\r\nHello there\r\n") expect(message.decoded).to eq("Hello there\n") end end end describe "envelope line handling" do it "should respond to 'envelope from'" do expect(Mail::Message.new).to respond_to(:envelope_from) end it "should strip off the envelope from field if present" do message = read_fixture('emails', 'plain_emails', 'raw_email.eml') expect(message.envelope_from).to eq "jamis_buck@byu.edu" expect(message.envelope_date).to eq ::DateTime.parse("Mon May 2 16:07:05 2005") end it "should strip off the envelope from field if present" do message = read_fixture('emails', 'plain_emails', 'raw_email.eml') expect(message.raw_envelope).to eq "jamis_buck@byu.edu Mon May 2 16:07:05 2005" expect(message.from).to eq ["jamis@37signals.com"] end it "should not cause any problems if there is no envelope from present" do message = read_fixture('emails', 'plain_emails', 'basic_email.eml') expect(message.from).to eq ["test@lindsaar.net"] end it "should ignore a plain text body that starts with ^From" do m = Mail::Message.new("From: mikel@test.lindsaar.net\r\n\r\nThis is a way to break mail by putting\r\nFrom at the start of a body\r\nor elsewhere.") expect(m.from).not_to be_nil expect(m.from).to eq ['mikel@test.lindsaar.net'] end it "should handle a multipart message that has ^From in it" do m = read_fixture('emails', 'error_emails', 'cant_parse_from.eml') expect(m.from).not_to be_nil expect(m.from).to eq ["News@InsideApple.Apple.com"] expect(m).to be_multipart end end describe "accepting a plain text string email" do it "should accept some email text to parse and return an email" do mail = Mail::Message.new(basic_email) expect(mail.class).to eq Mail::Message end it "should set a raw source instance variable to equal the passed in message" do mail = Mail::Message.new(basic_email) expect(mail.raw_source).to eq basic_email end it "should set the raw source instance variable to '' if no message is passed in" do mail = Mail::Message.new expect(mail.raw_source).to eq "" end it "should give the header class the header to parse" do header = Mail::Header.new("To: mikel\r\nFrom: bob\r\nSubject: Hello!") expect(Mail::Header).to receive(:new).with("To: mikel\r\nFrom: bob\r\nSubject: Hello!", 'UTF-8').and_return(header) Mail::Message.new(basic_email) end it "should give the header class the header to parse even if there is no body" do header = Mail::Header.new("To: mikel\r\nFrom: bob\r\nSubject: Hello!") expect(Mail::Header).to receive(:new).with("To: mikel\r\nFrom: bob\r\nSubject: Hello!", 'UTF-8').and_return(header) Mail::Message.new("To: mikel\r\nFrom: bob\r\nSubject: Hello!") end it "should give the body class the body to parse" do body = Mail::Body.new("email message") expect(Mail::Body).to receive(:new).with("email message\r\n").and_return(body) mail = Mail::Message.new(basic_email) mail.body #body calculates now lazy so need to ask for it end it "should still ask the body for a new instance even though these is nothing to parse, yet" do body = Mail::Body.new('') expect(Mail::Body).to receive(:new).and_return(body) Mail::Message.new("To: mikel\r\nFrom: bob\r\nSubject: Hello!") end it "should give the header the part before the line without spaces and the body the part without" do header = Mail::Header.new("To: mikel") body = Mail::Body.new("G'Day!") expect(Mail::Header).to receive(:new).with("To: mikel", 'UTF-8').and_return(header) expect(Mail::Body).to receive(:new).with("G'Day!").and_return(body) mail = Mail::Message.new("To: mikel\r\n\r\nG'Day!") mail.body #body calculates now lazy so need to ask for it end it "should allow for whitespace at the start of the email" do mail = Mail.new("\r\n\r\nFrom: mikel\r\n\r\nThis is the body") expect(mail.body.to_s).to eq 'This is the body' expect(mail.from).to eq ['mikel'] end it "should read in an email message with the word 'From' in it multiple times and parse it" do mail = read_fixture('emails', 'mime_emails', 'two_from_in_message.eml') expect(mail.to).not_to be_nil expect(mail.to).to eq ["tester2@test.com"] end it "should parse non-UTF8 sources" do raw_message = read_raw_fixture('emails', 'multi_charset', 'japanese_iso_2022.eml') original_encoding = raw_message.encoding if raw_message.respond_to?(:encoding) mail = Mail.new(raw_message) expect(mail.to).to eq ["raasdnil@gmail.com"] expect(mail.decoded).to eq "すみません。\n\n" expect(raw_message.encoding).to eq original_encoding if raw_message.respond_to?(:encoding) end it "should parse sources with charsets that we know but Ruby doesn't" do raw_message = read_raw_fixture('emails', 'multi_charset', 'ks_c_5601-1987.eml') original_encoding = raw_message.encoding if raw_message.respond_to?(:encoding) mail = Mail.new(raw_message) expect(mail.decoded.chomp).to eq "스티해" expect(raw_message.encoding).to eq original_encoding if raw_message.respond_to?(:encoding) end if '1.9+'.respond_to?(:encoding) it "should be able to normalize CRLFs on non-UTF8 encodings" do File.open(fixture_path('emails', 'multi_charset', 'japanese_shift_jis.eml'), 'rb') do |io| mail = Mail.new(io.read) expect(mail.raw_source.encoding).to eq Encoding::BINARY end end end if '1.9+'.respond_to?(:encoding) it "should be able to normalize CRLFs on non-UTF8 encodings" do File.open(fixture_path('emails', 'multi_charset', 'japanese_shift_jis.eml'), 'rb') do |io| mail = Mail.new(io.read) expect(mail.raw_source.encoding).to eq Encoding::BINARY end end end end describe "directly setting values of a message" do describe "accessing fields directly" do before(:each) do @mail = Mail::Message.new end it "should allow you to grab field objects if you really want to" do expect(@mail.header_fields.class).to eq Mail::FieldList end it "should give you back the fields in the header" do @mail['bar'] = 'abcd' expect(@mail.header_fields.length).to eq 1 @mail['foo'] = '4321' expect(@mail.header_fields.length).to eq 2 end it "should delete a field if it is set to nil" do @mail['foo'] = '4321' expect(@mail.header_fields.length).to eq 1 @mail['foo'] = nil expect(@mail.header_fields.length).to eq 0 end end describe "with :method=" do before(:each) do @mail = Mail::Message.new end it "should return the to field" do @mail.to = "mikel" expect(@mail.to).to eq ["mikel"] end it "should return the from field" do @mail.from = "bob" expect(@mail.from).to eq ["bob"] end it "should return the subject" do @mail.subject = "Hello!" expect(@mail.subject).to eq "Hello!" end it "should return the body decoded with to_s" do @mail.body "email message\r\n" expect(@mail.body.to_s).to eq "email message\n" end it "should return the body encoded if asked for" do @mail.body "email message\r\n" expect(@mail.body.encoded).to eq "email message\r\n" end it "should return the body decoded if asked for" do @mail.body "email message\r\n" expect(@mail.body.decoded).to eq "email message\n" end end describe "with :method(value)" do before(:each) do @mail = Mail::Message.new end it "should return the to field" do @mail.to "mikel" expect(@mail.to).to eq ["mikel"] end it "should return the from field" do @mail.from "bob" expect(@mail.from).to eq ["bob"] end it "should return the subject" do @mail.subject "Hello!" expect(@mail.subject).to eq "Hello!" end it "should return the body decoded with to_s" do @mail.body "email message\r\n" expect(@mail.body.to_s).to eq "email message\n" end it "should return the body encoded if asked for" do @mail.body "email message\r\n" expect(@mail.body.encoded).to eq "email message\r\n" end it "should return the body decoded if asked for" do @mail.body "email message\r\n" expect(@mail.body.decoded).to eq "email message\n" end end describe "setting arbitrary headers" do before(:each) do @mail = Mail::Message.new end it "should allow you to set them" do expect {@mail['foo'] = 1234}.not_to raise_error end it "should allow you to read arbitrary headers" do @mail['foo'] = 1234 expect(@mail['foo'].value.to_s).to eq '1234' end it "should instantiate a new Header" do @mail['foo'] = 1234 expect(@mail.header_fields.first.class).to eq Mail::Field end end describe "replacing header values" do it "should allow you to replace a from field" do mail = Mail.new expect(mail.from).to be_nil mail.from = 'mikel@test.lindsaar.net' expect(mail.from).to eq ['mikel@test.lindsaar.net'] mail.from = 'bob@test.lindsaar.net' expect(mail.from).to eq ['bob@test.lindsaar.net'] end it "should maintain the class of the field" do mail = Mail.new mail.from = 'mikel@test.lindsaar.net' expect(mail[:from].field.class).to eq Mail::FromField mail.from = 'bob@test.lindsaar.net' expect(mail[:from].field.class).to eq Mail::FromField end end describe "setting headers" do it "should accept them in block form" do message = Mail.new do bcc 'mikel@bcc.lindsaar.net' cc 'mikel@cc.lindsaar.net' comments 'this is a comment' date '12 Aug 2009 00:00:01 GMT' from 'mikel@from.lindsaar.net' in_reply_to '<1234@in_reply_to.lindsaar.net>' keywords 'test, "of the new mail", system' message_id '<1234@message_id.lindsaar.net>' received 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' references '<1234@references.lindsaar.net>' reply_to 'mikel@reply-to.lindsaar.net' resent_bcc 'mikel@resent-bcc.lindsaar.net' resent_cc 'mikel@resent-cc.lindsaar.net' resent_date '12 Aug 2009 00:00:03 GMT' resent_from 'mikel@resent-from.lindsaar.net' resent_message_id '<1234@resent_message_id.lindsaar.net>' resent_sender 'mikel@resent-sender.lindsaar.net' resent_to 'mikel@resent-to.lindsaar.net' sender 'mikel@sender.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' content_type 'text/plain; charset=UTF-8' content_transfer_encoding '7bit' content_description 'This is a test' content_disposition 'attachment; filename=File' content_id '<1234@message_id.lindsaar.net>' mime_version '1.0' body 'This is a body of text' end expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should accept them in assignment form" do message = Mail.new message.bcc = 'mikel@bcc.lindsaar.net' message.cc = 'mikel@cc.lindsaar.net' message.comments = 'this is a comment' message.date = '12 Aug 2009 00:00:01 GMT' message.from = 'mikel@from.lindsaar.net' message.in_reply_to = '<1234@in_reply_to.lindsaar.net>' message.keywords = 'test, "of the new mail", system' message.message_id = '<1234@message_id.lindsaar.net>' message.received = 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' message.references = '<1234@references.lindsaar.net>' message.reply_to = 'mikel@reply-to.lindsaar.net' message.resent_bcc = 'mikel@resent-bcc.lindsaar.net' message.resent_cc = 'mikel@resent-cc.lindsaar.net' message.resent_date = '12 Aug 2009 00:00:03 GMT' message.resent_from = 'mikel@resent-from.lindsaar.net' message.resent_message_id = '<1234@resent_message_id.lindsaar.net>' message.resent_sender = 'mikel@resent-sender.lindsaar.net' message.resent_to = 'mikel@resent-to.lindsaar.net' message.sender = 'mikel@sender.lindsaar.net' message.subject = 'Hello there Mikel' message.to = 'mikel@to.lindsaar.net' message.content_type = 'text/plain; charset=UTF-8' message.content_transfer_encoding = '7bit' message.content_description = 'This is a test' message.content_disposition = 'attachment; filename=File' message.content_id = '<1234@message_id.lindsaar.net>' message.mime_version = '1.0' message.body = 'This is a body of text' expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should accept them in key, value form as symbols" do message = Mail.new message[:bcc] = 'mikel@bcc.lindsaar.net' message[:cc] = 'mikel@cc.lindsaar.net' message[:comments] = 'this is a comment' message[:date] = '12 Aug 2009 00:00:01 GMT' message[:from] = 'mikel@from.lindsaar.net' message[:in_reply_to] = '<1234@in_reply_to.lindsaar.net>' message[:keywords] = 'test, "of the new mail", system' message[:message_id] = '<1234@message_id.lindsaar.net>' message[:received] = 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' message[:references] = '<1234@references.lindsaar.net>' message[:reply_to] = 'mikel@reply-to.lindsaar.net' message[:resent_bcc] = 'mikel@resent-bcc.lindsaar.net' message[:resent_cc] = 'mikel@resent-cc.lindsaar.net' message[:resent_date] = '12 Aug 2009 00:00:03 GMT' message[:resent_from] = 'mikel@resent-from.lindsaar.net' message[:resent_message_id] = '<1234@resent_message_id.lindsaar.net>' message[:resent_sender] = 'mikel@resent-sender.lindsaar.net' message[:resent_to] = 'mikel@resent-to.lindsaar.net' message[:sender] = 'mikel@sender.lindsaar.net' message[:subject] = 'Hello there Mikel' message[:to] = 'mikel@to.lindsaar.net' message[:content_type] = 'text/plain; charset=UTF-8' message[:content_transfer_encoding] = '7bit' message[:content_description] = 'This is a test' message[:content_disposition] = 'attachment; filename=File' message[:content_id] = '<1234@message_id.lindsaar.net>' message[:mime_version]= '1.0' message[:body] = 'This is a body of text' expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should accept them in key, value form as strings" do message = Mail.new message['bcc'] = 'mikel@bcc.lindsaar.net' message['cc'] = 'mikel@cc.lindsaar.net' message['comments'] = 'this is a comment' message['date'] = '12 Aug 2009 00:00:01 GMT' message['from'] = 'mikel@from.lindsaar.net' message['in_reply_to'] = '<1234@in_reply_to.lindsaar.net>' message['keywords'] = 'test, "of the new mail", system' message['message_id'] = '<1234@message_id.lindsaar.net>' message['received'] = 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' message['references'] = '<1234@references.lindsaar.net>' message['reply_to'] = 'mikel@reply-to.lindsaar.net' message['resent_bcc'] = 'mikel@resent-bcc.lindsaar.net' message['resent_cc'] = 'mikel@resent-cc.lindsaar.net' message['resent_date'] = '12 Aug 2009 00:00:03 GMT' message['resent_from'] = 'mikel@resent-from.lindsaar.net' message['resent_message_id'] = '<1234@resent_message_id.lindsaar.net>' message['resent_sender'] = 'mikel@resent-sender.lindsaar.net' message['resent_to'] = 'mikel@resent-to.lindsaar.net' message['sender'] = 'mikel@sender.lindsaar.net' message['subject'] = 'Hello there Mikel' message['to'] = 'mikel@to.lindsaar.net' message['content_type'] = 'text/plain; charset=UTF-8' message['content_transfer_encoding'] = '7bit' message['content_description'] = 'This is a test' message['content_disposition'] = 'attachment; filename=File' message['content_id'] = '<1234@message_id.lindsaar.net>' message['mime_version'] = '1.0' message['body'] = 'This is a body of text' expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should accept them as a hash with symbols" do message = Mail.new({ :bcc => 'mikel@bcc.lindsaar.net', :cc => 'mikel@cc.lindsaar.net', :comments => 'this is a comment', :date => '12 Aug 2009 00:00:01 GMT', :from => 'mikel@from.lindsaar.net', :in_reply_to => '<1234@in_reply_to.lindsaar.net>', :keywords => 'test, "of the new mail", system', :message_id => '<1234@message_id.lindsaar.net>', :received => 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT', :references => '<1234@references.lindsaar.net>', :reply_to => 'mikel@reply-to.lindsaar.net', :resent_bcc => 'mikel@resent-bcc.lindsaar.net', :resent_cc => 'mikel@resent-cc.lindsaar.net', :resent_date => '12 Aug 2009 00:00:03 GMT', :resent_from => 'mikel@resent-from.lindsaar.net', :resent_message_id => '<1234@resent_message_id.lindsaar.net>', :resent_sender => 'mikel@resent-sender.lindsaar.net', :resent_to => 'mikel@resent-to.lindsaar.net', :sender => 'mikel@sender.lindsaar.net', :subject => 'Hello there Mikel', :to => 'mikel@to.lindsaar.net', :content_type => 'text/plain; charset=UTF-8', :content_transfer_encoding => '7bit', :content_description => 'This is a test', :content_disposition => 'attachment; filename=File', :content_id => '<1234@message_id.lindsaar.net>', :mime_version => '1.0', :body => 'This is a body of text' }) expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should accept them as a hash with strings" do message = Mail.new({ 'bcc' => 'mikel@bcc.lindsaar.net', 'cc' => 'mikel@cc.lindsaar.net', 'comments' => 'this is a comment', 'date' => '12 Aug 2009 00:00:01 GMT', 'from' => 'mikel@from.lindsaar.net', 'in_reply_to' => '<1234@in_reply_to.lindsaar.net>', 'keywords' => 'test, "of the new mail", system', 'message_id' => '<1234@message_id.lindsaar.net>', 'received' => 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT', 'references' => '<1234@references.lindsaar.net>', 'reply_to' => 'mikel@reply-to.lindsaar.net', 'resent_bcc' => 'mikel@resent-bcc.lindsaar.net', 'resent_cc' => 'mikel@resent-cc.lindsaar.net', 'resent_date' => '12 Aug 2009 00:00:03 GMT', 'resent_from' => 'mikel@resent-from.lindsaar.net', 'resent_message_id' => '<1234@resent_message_id.lindsaar.net>', 'resent_sender' => 'mikel@resent-sender.lindsaar.net', 'resent_to' => 'mikel@resent-to.lindsaar.net', 'sender' => 'mikel@sender.lindsaar.net', 'subject' => 'Hello there Mikel', 'to' => 'mikel@to.lindsaar.net', 'content_type' => 'text/plain; charset=UTF-8', 'content_transfer_encoding' => '7bit', 'content_description' => 'This is a test', 'content_disposition' => 'attachment; filename=File', 'content_id' => '<1234@message_id.lindsaar.net>', 'mime_version' => '1.0', 'body' => 'This is a body of text' }) expect(message.bcc).to eq ['mikel@bcc.lindsaar.net'] expect(message.cc).to eq ['mikel@cc.lindsaar.net'] expect(message.comments).to eq 'this is a comment' expect(message.date).to eq DateTime.parse('12 Aug 2009 00:00:01 GMT') expect(message.from).to eq ['mikel@from.lindsaar.net'] expect(message.in_reply_to).to eq '1234@in_reply_to.lindsaar.net' expect(message.keywords).to eq ["test", "of the new mail", "system"] expect(message.message_id).to eq '1234@message_id.lindsaar.net' expect(message.received.date_time).to eq DateTime.parse('12 Aug 2009 00:00:02 GMT') expect(message.references).to eq '1234@references.lindsaar.net' expect(message.reply_to).to eq ['mikel@reply-to.lindsaar.net'] expect(message.resent_bcc).to eq ['mikel@resent-bcc.lindsaar.net'] expect(message.resent_cc).to eq ['mikel@resent-cc.lindsaar.net'] expect(message.resent_date).to eq DateTime.parse('12 Aug 2009 00:00:03 GMT') expect(message.resent_from).to eq ['mikel@resent-from.lindsaar.net'] expect(message.resent_message_id).to eq '1234@resent_message_id.lindsaar.net' expect(message.resent_sender).to eq ['mikel@resent-sender.lindsaar.net'] expect(message.resent_to).to eq ['mikel@resent-to.lindsaar.net'] expect(message.sender).to eq 'mikel@sender.lindsaar.net' expect(message.subject).to eq 'Hello there Mikel' expect(message.to).to eq ['mikel@to.lindsaar.net'] expect(message.content_type).to eq 'text/plain; charset=UTF-8' expect(message.content_transfer_encoding).to eq '7bit' expect(message.content_description).to eq 'This is a test' expect(message.content_disposition).to eq 'attachment; filename=File' expect(message.content_id).to eq '<1234@message_id.lindsaar.net>' expect(message.mime_version).to eq '1.0' expect(message.body.to_s).to eq 'This is a body of text' end it "should let you set custom headers with a :headers => {hash}" do message = Mail.new(:headers => {'custom-header' => 'mikel'}) expect(message['custom-header'].decoded).to eq 'mikel' end it "should assign the body to a part on creation" do message = Mail.new do part({:content_type=>"multipart/alternative", :content_disposition=>"inline", :body=>"Nothing to see here."}) end expect(message.parts.first.body.decoded).to eq "Nothing to see here." end it "should not overwrite bodies on creation" do message = Mail.new do part({:content_type=>"multipart/alternative", :content_disposition=>"inline", :body=>"Nothing to see here."}) do |p| p.part :content_type => "text/html", :body => "test HTML
    " end end expect(message.parts.first.parts[0].body.decoded).to eq "Nothing to see here." expect(message.parts.first.parts[1].body.decoded).to eq "test HTML
    " expect(message.encoded).to match %r{Nothing to see here\.} expect(message.encoded).to match %r{test HTML
    } end it "should allow you to init on an array of addresses from a hash" do mail = Mail.new(:to => ['test1@lindsaar.net', 'Mikel ']) expect(mail.to).to eq ['test1@lindsaar.net', 'test2@lindsaar.net'] end it "should allow you to init on an array of addresses directly" do mail = Mail.new mail.to = ['test1@lindsaar.net', 'Mikel '] expect(mail.to).to eq ['test1@lindsaar.net', 'test2@lindsaar.net'] end it "should allow you to init on an array of addresses directly" do mail = Mail.new mail[:to] = ['test1@lindsaar.net', 'Mikel '] expect(mail.to).to eq ['test1@lindsaar.net', 'test2@lindsaar.net'] end end end describe "making a copy of a message with dup" do def message_should_have_default_values(message) expect(message.bcc).to be_nil expect(message.cc).to be_nil expect(message.comments).to be_nil expect(message.date).to be_nil expect(message.from).to be_nil expect(message.in_reply_to).to be_nil expect(message.keywords).to be_nil expect(message.message_id).to be_nil expect(message.received).to be_nil expect(message.references).to be_nil expect(message.reply_to).to be_nil expect(message.resent_bcc).to be_nil expect(message.resent_cc).to be_nil expect(message.resent_date).to be_nil expect(message.resent_from).to be_nil expect(message.resent_message_id).to be_nil expect(message.resent_sender).to be_nil expect(message.resent_to).to be_nil expect(message.sender).to be_nil expect(message.subject).to be_nil expect(message.to).to be_nil expect(message.content_type).to be_nil expect(message.content_transfer_encoding).to be_nil expect(message.content_description).to be_nil expect(message.content_disposition).to be_nil expect(message.content_id).to be_nil expect(message.mime_version).to be_nil expect(message.body.to_s).to eq '' end it "its headers should not be changed when you change the headers of the original" do message = Mail.new message_copy = message.dup message_should_have_default_values message message_should_have_default_values message_copy message[:bcc] = 'mikel@bcc.lindsaar.net' message[:cc] = 'mikel@cc.lindsaar.net' message[:comments] = 'this is a comment' message[:date] = '12 Aug 2009 00:00:01 GMT' message[:from] = 'mikel@from.lindsaar.net' message[:in_reply_to] = '<1234@in_reply_to.lindsaar.net>' message[:keywords] = 'test, "of the new mail", system' message[:message_id] = '<1234@message_id.lindsaar.net>' message[:received] = 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' message[:references] = '<1234@references.lindsaar.net>' message[:reply_to] = 'mikel@reply-to.lindsaar.net' message[:resent_bcc] = 'mikel@resent-bcc.lindsaar.net' message[:resent_cc] = 'mikel@resent-cc.lindsaar.net' message[:resent_date] = '12 Aug 2009 00:00:03 GMT' message[:resent_from] = 'mikel@resent-from.lindsaar.net' message[:resent_message_id] = '<1234@resent_message_id.lindsaar.net>' message[:resent_sender] = 'mikel@resent-sender.lindsaar.net' message[:resent_to] = 'mikel@resent-to.lindsaar.net' message[:sender] = 'mikel@sender.lindsaar.net' message[:subject] = 'Hello there Mikel' message[:to] = 'mikel@to.lindsaar.net' message[:content_type] = 'text/plain; charset=UTF-8' message[:content_transfer_encoding] = '7bit' message[:content_description] = 'This is a test' message[:content_disposition] = 'attachment; filename=File' message[:content_id] = '<1234@message_id.lindsaar.net>' message[:mime_version]= '1.0' message[:body] = 'This is a body of text' message_should_have_default_values message_copy end def message_headers_should_match(message, other) expect(message.bcc).to eq other.bcc expect(message.cc).to eq other.cc expect(message.comments).to eq other.comments expect(message.date).to eq other.date expect(message.from).to eq other.from expect(message.in_reply_to).to eq other.in_reply_to expect(message.keywords).to eq other.keywords expect(message.message_id).to eq other.message_id expect(message.received).to eq other.received expect(message.references).to eq other.references expect(message.reply_to).to eq other.reply_to expect(message.resent_bcc).to eq other.resent_bcc expect(message.resent_cc).to eq other.resent_cc expect(message.resent_date).to eq other.resent_date expect(message.resent_from).to eq other.resent_from expect(message.resent_message_id).to eq other.resent_message_id expect(message.resent_sender).to eq other.resent_sender expect(message.resent_to).to eq other.resent_to expect(message.sender).to eq other.sender expect(message.subject).to eq other.subject expect(message.to).to eq other.to expect(message.content_type).to eq other.content_type expect(message.content_transfer_encoding).to eq other.content_transfer_encoding expect(message.content_description).to eq other.content_description expect(message.content_disposition).to eq other.content_disposition expect(message.content_id).to eq other.content_id expect(message.mime_version).to eq other.mime_version expect(message.body.to_s).to eq other.body.to_s end it "its headers should be copies of the headers of the original" do message = Mail.new message[:bcc] = 'mikel@bcc.lindsaar.net' message[:cc] = 'mikel@cc.lindsaar.net' message[:comments] = 'this is a comment' message[:date] = '12 Aug 2009 00:00:01 GMT' message[:from] = 'mikel@from.lindsaar.net' message[:in_reply_to] = '<1234@in_reply_to.lindsaar.net>' message[:keywords] = 'test, "of the new mail", system' message[:message_id] = '<1234@message_id.lindsaar.net>' message[:received] = 'from machine.example by x.y.test; 12 Aug 2009 00:00:02 GMT' message[:references] = '<1234@references.lindsaar.net>' message[:reply_to] = 'mikel@reply-to.lindsaar.net' message[:resent_bcc] = 'mikel@resent-bcc.lindsaar.net' message[:resent_cc] = 'mikel@resent-cc.lindsaar.net' message[:resent_date] = '12 Aug 2009 00:00:03 GMT' message[:resent_from] = 'mikel@resent-from.lindsaar.net' message[:resent_message_id] = '<1234@resent_message_id.lindsaar.net>' message[:resent_sender] = 'mikel@resent-sender.lindsaar.net' message[:resent_to] = 'mikel@resent-to.lindsaar.net' message[:sender] = 'mikel@sender.lindsaar.net' message[:subject] = 'Hello there Mikel' message[:to] = 'mikel@to.lindsaar.net' message[:content_type] = 'text/plain; charset=UTF-8' message[:content_transfer_encoding] = '7bit' message[:content_description] = 'This is a test' message[:content_disposition] = 'attachment; filename=File' message[:content_id] = '<1234@message_id.lindsaar.net>' message[:mime_version]= '1.0' message[:body] = 'This is a body of text' message_copy = message.dup message_headers_should_match message_copy, message end end describe "handling missing required fields:" do describe "every email" do describe "Message-ID" do it "should say if it has a message id" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail).not_to be_has_message_id end it "should preserve any message id that you pass it if add_message_id is called explicitly" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_message_id("") expect(mail.to_s).to match(/Message-ID: \r\n/) end it "should generate a random message ID if nothing is passed to add_message_id" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_message_id expect(mail.to_s).to match(/Message-ID: <[\w]+@#{::Socket.gethostname}.mail>\r\n/) end it "should make an email and inject a message ID if none was set if told to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail.to_s =~ /Message-ID: <.+@.+.mail>/i).not_to be_nil end it "should add the message id to the message permanently once sent to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.to_s expect(mail).to be_has_message_id end it "should add a body part if it is missing" do mail = Mail.new mail.to_s expect(mail.body.class).to eq Mail::Body end end describe "Date" do it "should say if it has a date" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail).not_to be_has_date end it "should preserve any date that you pass it if add_date is called explicitly" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_date("Mon, 24 Nov 1997 14:22:01 -0800") expect(mail.to_s).to match(/Date: Mon, 24 Nov 1997 14:22:01 -0800/) end it "should generate a current date if nothing is passed to add_date" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_date expect(mail.to_s).to match(/Date: \w{3}, [\s\d]\d \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]?\d{4}\r\n/) end it "should make an email and inject a date if none was set if told to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail.to_s).to match(/Date: \w{3}, [\s\d]\d \w{3} \d{4} \d{2}:\d{2}:\d{2} [-+]?\d{4}\r\n/) end it "should add the date to the message permanently once sent to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.to_s expect(mail).to be_has_date end end end describe "mime emails" do describe "mime-version" do it "should say if it has a mime-version" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail).not_to be_has_mime_version end it "should preserve any mime version that you pass it if add_mime_version is called explicitly" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_mime_version("3.0 (This is an unreal version number)") expect(mail.to_s).to match(/Mime-Version: 3.0\r\n/) end it "should generate a mime version if nothing is passed to add_date" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.add_mime_version expect(mail.to_s).to match(/Mime-Version: 1.0\r\n/) end it "should make an email and inject a mime_version if none was set if told to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail.to_s).to match(/Mime-Version: 1.0\r\n/) end it "should add the mime version to the message permanently once sent to_s" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end mail.to_s expect(mail).to be_has_mime_version end end describe "content type" do it "should say if it has a content type" do mail = Mail.new('Content-Type: text/plain') expect(mail).to be_has_content_type end it "should say if it does not have a content type" do mail = Mail.new expect(mail).not_to be_has_content_type end it "should say if it has a charset" do mail = Mail.new('Content-Type: text/plain; charset=US-ASCII') expect(mail).to be_has_charset end it "should say if it has a charset" do mail = Mail.new('Content-Type: text/plain') expect(mail).not_to be_has_charset end it "should not raise a warning if there is no charset defined and only US-ASCII chars" do body = "This is plain text US-ASCII" mail = Mail.new mail.body = body expect { mail.to_s }.to_not output.to_stderr end it "should set the content type to text/plain; charset=us-ascii" do body = "This is plain text US-ASCII" mail = Mail.new mail.body = body expect(mail.to_s).to match(%r{|Content-Type: text/plain; charset=US-ASCII|}) end it "should not set the charset if the file is an attachment" do body = "This is plain text US-ASCII" mail = Mail.new mail.body = body mail.content_disposition = 'attachment; filename="foo.jpg"' expect(mail.to_s).to match("Content-Type: text/plain;\r\n") end it "should not set the charset if the content_type is not text" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.content_type = "image/png" expect(mail.to_s).to_not match("Content-Type: image/png;\\s+charset=UTF-8") end it "should raise a warning if there is no content type and there is non ascii chars and default to text/plain, UTF-8" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.content_transfer_encoding = "8bit" result = nil expect { result = mail.to_s }.to output(/Non US-ASCII detected and no charset defined.\nDefaulting to UTF-8, set your own if this is incorrect./).to_stderr expect(result).to match(%r{|Content-Type: text/plain; charset=UTF-8|}) end it "should raise a warning if there is no charset parameter and there is non ascii chars and default to text/plain, UTF-8" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.content_type = "text/plain" mail.content_transfer_encoding = "8bit" result = nil expect { result = mail.to_s }.to output(/Non US-ASCII detected and no charset defined.\nDefaulting to UTF-8, set your own if this is incorrect./).to_stderr expect(result).to match(%r{|Content-Type: text/plain; charset=UTF-8|}) end it "should not raise a warning if there is no charset parameter and the content-type is not text" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.content_type = "image/png" mail.content_transfer_encoding = "8bit" expect { mail.to_s }.to_not output.to_stderr end it "should not raise a warning if there is a charset defined and there is non ascii chars" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.content_transfer_encoding = "8bit" mail.content_type = "text/plain; charset=UTF-8" expect { mail.to_s }.to_not output.to_stderr end it "should be able to set a content type with an array and hash" do mail = Mail.new mail.content_type = ["text", "plain", { :charset => 'US-ASCII' }] expect(mail[:content_type].encoded).to eq %Q[Content-Type: text/plain;\r\n\scharset=US-ASCII\r\n] expect(mail.content_type_parameters).to eql({"charset" => "US-ASCII"}) end it "should be able to set a content type with an array and hash with a non-usascii field" do mail = Mail.new mail.content_type = ["text", "plain", { :charset => 'UTF-8' }] expect(mail[:content_type].encoded).to eq %Q[Content-Type: text/plain;\r\n\scharset=UTF-8\r\n] expect(mail.content_type_parameters).to eql({"charset" => "UTF-8"}) end it "should allow us to specify a content type in a block" do mail = Mail.new { content_type ["text", "plain", { "charset" => "UTF-8" }] } expect(mail.content_type_parameters).to eql({"charset" => "UTF-8"}) end end it "rfc2046 can be decoded" do mail = Mail.new mail.body << Mail::Part.new.tap do |part| part.content_disposition = 'attachment; filename="test.eml"' part.content_type = 'message/rfc822' part.body = "This is NOT plain text ASCII − かきくけこ" * 30 end roundtripped = Mail.new(mail.encoded) expect(roundtripped.content_transfer_encoding).to eq '7bit' expect(roundtripped.parts.last.content_transfer_encoding).to eq '' # Check that the part's transfer encoding isn't set to 7bit, causing # the actual content to end up encoded with base64. expect(roundtripped.encoded).to include('NOT plain') expect(roundtripped.content_transfer_encoding).to eq '7bit' expect(roundtripped.parts.last.content_transfer_encoding).to eq '' end # https://www.ietf.org/rfc/rfc2046.txt # No encoding other than "7bit", "8bit", or "binary" is permitted for # the body of a "message/rfc822" entity. it "rfc2046" do mail = Mail.new mail.body << Mail::Part.new.tap do |part| part.content_disposition = 'attachment; filename="test.eml"' part.content_type = 'message/rfc822' part.body = 'a' * 999 end mail.encoded expect(mail.parts.count).to eq(1) expect(mail.parts.last.content_transfer_encoding).to match(/7bit|8bit|binary/) end describe 'charset' do it 'should return a default value for multipart mails' do mail = Mail.new mail.add_part(Mail::Part.new(body: 'PLAIN TEXT', content_type: 'text/plain')) expect(mail.charset).to eq 'UTF-8' end end describe 'charset=' do before do @mail = Mail.new do to 'mikel@test.lindsaar.net' from 'bob@test.lindsaar.net' subject 'Multipart email' text_part do body 'This is plain text' end html_part do content_type 'text/html; charset=UTF-8' body '

    This is HTML

    ' end end end it "should not add an empty charset header" do @mail.charset = nil expect(@mail.multipart?).to eq true expect(@mail.parts.count).to eq 2 expect(@mail.encoded.scan(/charset=UTF-8/).count).to eq 2 end it "should remove the charset header" do @mail.charset = 'iso-8859-1' @mail.charset = nil expect(@mail.encoded.scan(/charset=UTF-8/).count).to eq 2 expect(@mail.encoded.scan(/charset=iso-8859-1/).count).to eq 0 end end describe "convert_to_multipart" do subject do read_fixture('emails', 'attachment_emails', 'attachment_only_email.eml').tap(&:convert_to_multipart) end it "original content headers move to the new part" do expect(subject.header[:content_type]).to be_nil expect(subject.header[:content_disposition]).to be_nil expect(subject.header[:content_description]).to be_nil expect(subject.header[:content_transfer_encoding]).to be_nil expect(subject.parts[0].header[:content_type].value).to eq("application/x-gzip; NAME=blah.gz") expect(subject.parts[0].header[:content_disposition].value).to eq("attachment; filename=blah.gz") expect(subject.parts[0].header[:content_description].value).to eq("Attachment has identical content to above foo.gz") expect(subject.parts[0].header[:content_transfer_encoding].value).to eq("base64") end end describe "content-transfer-encoding" do it "should use 7bit for only US-ASCII chars" do body = "This is plain text US-ASCII" mail = Mail.new mail.body = body expect(mail.to_s).to match(%r{Content-Transfer-Encoding: 7bit}) end it "should use QP transfer encoding for 7bit text with lines longer than 998 octets" do body = "a" * 999 mail = Mail.new mail.charset = "UTF-8" mail.body = body expect(mail.to_s).to match(%r{Content-Transfer-Encoding: quoted-printable}) end it "should use QP transfer encoding for 8bit text with only a few 8bit characters" do body = "Maxfeldstraße 5, 90409 Nürnberg" mail = Mail.new mail.charset = "UTF-8" mail.body = body expect(mail.to_s).to match(%r{Content-Transfer-Encoding: quoted-printable}) end it "should use QP transfer encoding for 8bit text attachment with only a few 8bit characters" do mail = Mail.new file_content = String.new("Pok\xE9mon") file_content = file_content.force_encoding('BINARY') if file_content.respond_to?(:force_encoding) mail.attachments['iso_text.txt'] = file_content mail.body = 'This is plain text US-ASCII' expect(mail.to_s).to match(%r{ Content-Transfer-Encoding:\ 7bit .* This\ is\ plain\ text\ US-ASCII .* Content-Transfer-Encoding:\ quoted-printable .* Pok=E9mon }mx) end it "should use base64 transfer encoding for 8-bit text with lots of 8bit characters" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.charset = "UTF-8" mail.body = body mail.content_type = "text/plain; charset=utf-8" expect(mail).to be_has_content_type expect(mail).to be_has_charset expect(mail.to_s).to match(%r{Content-Transfer-Encoding: base64}) end it "should use 8bit transfer encoding when 8bit is forced" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.charset = "UTF-8" mail.body = body mail.content_type = "text/plain; charset=utf-8" mail.transport_encoding = "8bit" expect(mail.to_s).to match(%r{Content-Transfer-Encoding: 8bit}) end end end end describe "output" do it "should make an email and allow you to call :to_s on it to get a string" do mail = Mail.new do from 'mikel@test.lindsaar.net' to 'you@test.lindsaar.net' subject 'This is a test email' body 'This is a body of the email' end expect(mail.to_s).to match(/From: mikel@test.lindsaar.net\r\n/) expect(mail.to_s).to match(/To: you@test.lindsaar.net\r\n/) expect(mail.to_s).to match(/Subject: This is a test email\r\n/) expect(mail.to_s).to match(/This is a body of the email/) end it "should raise an error and message if you try and call decoded on a multipart email" do mail = Mail.new do to 'mikel@test.lindsaar.net' from 'bob@test.lindsaar.net' subject 'Multipart email' text_part do body 'This is plain text' end html_part do content_type 'text/html; charset=UTF-8' body '

    This is HTML

    ' end end expect { mail.decoded }.to raise_error(NoMethodError, 'Can not decode an entire message, try calling #decoded on the various fields and body or parts if it is a multipart message.') end it "should return the decoded body if you call decode and the message is not multipart" do mail = Mail.new do content_transfer_encoding 'base64' body "VGhlIGJvZHk=\n" end expect(mail.decoded).to eq "The body" end describe "decoding bodies" do it "should not change a body on decode if not given an encoding type to decode" do mail = Mail.new do body "The=3Dbody" end expect(mail.body.decoded).to eq "The=3Dbody" expect(mail.body.encoded).to eq "The=3Dbody" end it "should change a body on decode if given an encoding type to decode" do mail = Mail.new do content_transfer_encoding 'quoted-printable' body "The=3Dbody" end expect(mail.body.decoded).to eq "The=body" expect(mail.body.encoded).to eq "The=3Dbody=\r\n" end it "should change a body on decode if given an encoding type to decode" do mail = Mail.new do content_transfer_encoding 'base64' body "VGhlIGJvZHk=\n" end expect(mail.body.decoded).to eq "The body" expect(mail.body.encoded).to eq "VGhlIGJvZHk=\r\n" end it 'should not strip the raw mail source in case the trailing \r\n is meaningful' do expect(Mail.new("Content-Transfer-Encoding: quoted-printable;\r\n\r\nfoo=\r\nbar=\r\nbaz=\r\n").decoded).to eq 'foobarbaz' end end end describe "text messages" do def message_with_iso_8859_1_charset "From: test@example.com\r\n"+ "Content-Type: text/plain; charset=iso-8859-1\r\n"+ "Content-Transfer-Encoding: quoted-printable\r\n"+ "Date: Tue, 27 Sep 2011 16:59:48 +0100 (BST)\r\n"+ "Subject: test\r\n\r\n"+ "Am=E9rica" end def with_encoder(encoder) old, Mail::Utilities.charset_encoder = Mail::Utilities.charset_encoder, encoder yield ensure Mail::Utilities.charset_encoder = old end let(:message){ Mail.new(message_with_iso_8859_1_charset) } it "should be decoded using content type charset" do expect(message.decoded).to eq "América" end it "should respond true to text?" do expect(message.text?).to eq true end it "inspect_structure should return the same as inspect (no attachments)" do expect(message.inspect_structure).to eq message.inspect end it "uses the Utilities charset encoder" do with_encoder(Mail::Utilities::BestEffortCharsetEncoder.new) do message = Mail.new("Content-Type: text/plain;\r\n charset=windows-1258\r\nContent-Transfer-Encoding: base64\r\n\r\nSGkglg==\r\n") expect(message.decoded).to eq("Hi –") end end end describe "helper methods" do describe "==" do before(:each) do # Ensure specs don't randomly fail due to messages being generated 1 second apart time = DateTime.now expect(DateTime).to receive(:now).at_least(:once).and_return(time) end it "should be implemented" do expect { Mail.new == Mail.new }.not_to raise_error end it "should ignore the message id value if both have a nil message id" do m1 = Mail.new("To: mikel@test.lindsaar.net\r\nSubject: Yo!\r\n\r\nHello there") m2 = Mail.new("To: mikel@test.lindsaar.net\r\nSubject: Yo!\r\n\r\nHello there") expect(m1).to eq m2 # confirm there are no side-effects in the comparison expect(m1[:message_id]).to be_nil expect(m2[:message_id]).to be_nil end it "should ignore the message id value if self has a nil message id" do m1 = Mail.new("To: mikel@test.lindsaar.net\r\nSubject: Yo!\r\n\r\nHello there") m2 = Mail.new("To: mikel@test.lindsaar.net\r\nMessage-ID: <1234@test.lindsaar.net>\r\nSubject: Yo!\r\n\r\nHello there") # confirm there are no side-effects in the comparison expect(m1[:message_id]).to be_nil expect(m2[:message_id].value).to eq '<1234@test.lindsaar.net>' expect(m1).to eq m2 end it "should ignore the message id value if other has a nil message id" do m1 = Mail.new("To: mikel@test.lindsaar.net\r\nMessage-ID: <1234@test.lindsaar.net>\r\nSubject: Yo!\r\n\r\nHello there") m2 = Mail.new("To: mikel@test.lindsaar.net\r\nSubject: Yo!\r\n\r\nHello there") # confirm there are no side-effects in the comparison expect(m1[:message_id].value).to eq '<1234@test.lindsaar.net>' expect(m2[:message_id]).to be_nil expect(m1).to eq m2 end it "should not be == if both emails have different Message IDs" do m1 = Mail.new("To: mikel@test.lindsaar.net\r\nMessage-ID: <4321@test.lindsaar.net>\r\nSubject: Yo!\r\n\r\nHello there") m2 = Mail.new("To: mikel@test.lindsaar.net\r\nMessage-ID: <1234@test.lindsaar.net>\r\nSubject: Yo!\r\n\r\nHello there") expect(m1).not_to eq m2 # confirm there are no side-effects in the comparison expect(m1.message_id).to eq '4321@test.lindsaar.net' expect(m2.message_id).to eq '1234@test.lindsaar.net' end end it "should implement the spaceship operator on the date field" do now = Time.now mail1 = Mail.new do date(now) end mail2 = Mail.new do date(now - 10) # Make mail2 10 seconds 'older' end expect([mail2, mail1].sort).to eq [mail2, mail1] end it "should have a destinations method" do mail = Mail.new do to 'mikel@test.lindsaar.net' cc 'bob@test.lindsaar.net' bcc 'sam@test.lindsaar.net' end expect(mail.destinations.length).to eq 3 end it "should have a from_addrs method" do mail = Mail.new do from 'mikel@test.lindsaar.net' end expect(mail.from_addrs.length).to eq 1 end it "should have a from_addrs method that is empty if nil" do mail = Mail.new do end expect(mail.from_addrs.length).to eq 0 end it "should have a to_addrs method" do mail = Mail.new do to 'mikel@test.lindsaar.net' end expect(mail.to_addrs.length).to eq 1 end it "should have a to_addrs method that is empty if nil" do mail = Mail.new do end expect(mail.to_addrs.length).to eq 0 end it "should have a cc_addrs method" do mail = Mail.new do cc 'bob@test.lindsaar.net' end expect(mail.cc_addrs.length).to eq 1 end it "should have a cc_addrs method that is empty if nil" do mail = Mail.new do end expect(mail.cc_addrs.length).to eq 0 end it "should have a bcc_addrs method" do mail = Mail.new do bcc 'sam@test.lindsaar.net' end expect(mail.bcc_addrs.length).to eq 1 end it "should have a bcc_addrs method that is empty if nil" do mail = Mail.new do end expect(mail.bcc_addrs.length).to eq 0 end it "should give destinations even if some of the fields are blank" do mail = Mail.new do to 'mikel@test.lindsaar.net' end expect(mail.destinations.length).to eq 1 end it "should be able to encode with only one destination" do mail = Mail.new do to 'mikel@test.lindsaar.net' end mail.encoded end end describe "nested parts" do it "adds a new text part when assigning the body on an already-multipart message" do mail = Mail.new do part :content_type => 'foo/bar', :body => 'baz' end mail.body 'this: body is not a header' expect(mail.parts.size).to eq(2) expect(mail.text_part).not_to be_nil expect(mail.text_part.decoded).to eq('this: body is not a header') end it "should provide a way to instantiate a new part as you go down" do mail = Mail.new do to 'mikel@test.lindsaar.net' subject "nested multipart" from "test@example.com" content_type "multipart/mixed" part :content_type => "multipart/alternative", :content_disposition => "inline", :headers => { "foo" => "bar" } do |p| p.part :content_type => "text/plain", :body => "test text\nline #2" p.part :content_type => "text/html", :body => "test HTML
    \nline #2" end end expect(mail.parts.first).to be_multipart expect(mail.parts.first.parts.length).to eq 2 expect(mail.parts.first.parts[0][:content_type].string).to eq "text/plain" expect(mail.parts.first.parts[0].body.decoded).to eq "test text\nline #2" expect(mail.parts.first.parts[1][:content_type].string).to eq "text/html" expect(mail.parts.first.parts[1].body.decoded).to eq "test HTML
    \nline #2" end end describe "deliver" do it "should return self after delivery" do mail = Mail.new mail.perform_deliveries = false expect(mail.deliver).to eq mail end class DeliveryAgent def self.deliver_mail(mail) end end it "should pass self to a delivery agent" do mail = Mail.new mail.delivery_handler = DeliveryAgent expect(DeliveryAgent).to receive(:deliver_mail).with(mail) mail.deliver end class ObserverAgent def self.delivered_email(mail) end end it "should inform observers that the mail was sent" do mail = Mail.new(:from => 'bob@example.com', :to => 'bobette@example.com') mail.delivery_method :test Mail.register_observer(ObserverAgent) expect(ObserverAgent).to receive(:delivered_email).with(mail) mail.deliver end it "should allow observers to be unregistered" do mail = Mail.new(:from => 'bob@example.com', :to => 'bobette@example.com') mail.delivery_method :test Mail.register_observer(ObserverAgent) Mail.unregister_observer(ObserverAgent) expect(ObserverAgent).not_to receive(:delivered_email).with(mail) mail.deliver end it "should inform observers that the mail was sent, even if a delivery agent is used" do mail = Mail.new mail.delivery_handler = DeliveryAgent Mail.register_observer(ObserverAgent) expect(ObserverAgent).to receive(:delivered_email).with(mail) mail.deliver end class InterceptorAgent @@intercept = false def self.intercept=(val) @@intercept = val end def self.delivering_email(mail) if @@intercept mail.to = 'bob@example.com' end end end it "should pass to the interceptor the email just before it gets sent" do mail = Mail.new(:from => 'bob@example.com', :to => 'bobette@example.com') mail.delivery_method :test Mail.register_interceptor(InterceptorAgent) expect(InterceptorAgent).to receive(:delivering_email).with(mail) InterceptorAgent.intercept = true mail.deliver InterceptorAgent.intercept = false end it "should let the interceptor that the mail was sent" do mail = Mail.new(:from => 'bob@example.com', :to => 'bobette@example.com') mail.to = 'fred@example.com' mail.delivery_method :test Mail.register_interceptor(InterceptorAgent) InterceptorAgent.intercept = true mail.deliver InterceptorAgent.intercept = false expect(mail.to).to eq ['bob@example.com'] end it "should allow interceptors to be unregistered" do mail = Mail.new(:from => 'bob@example.com', :to => 'bobette@example.com') mail.to = 'fred@example.com' mail.delivery_method :test Mail.register_interceptor(InterceptorAgent) InterceptorAgent.intercept = true Mail.unregister_interceptor(InterceptorAgent) mail.deliver InterceptorAgent.intercept = false expect(mail.to).to eq ['fred@example.com'] end end describe "error handling" do it "should collect up any of its fields' errors" do mail = Mail.new("Content-Transfer-Encoding: vl@d\r\nReply-To: a b b\r\n") expect(Mail::Utilities.blank?(mail.errors)).not_to be_truthy expect(mail.errors.size).to eq 2 expect(mail.errors[0][0]).to eq 'Reply-To' expect(mail.errors[0][1]).to eq 'a b b' expect(mail.errors[1][0]).to eq 'Content-Transfer-Encoding' expect(mail.errors[1][1]).to eq 'vl@d' end end describe "header case should be preserved" do it "should handle mail[] and keep the header case" do mail = Mail.new mail['X-Foo-Bar'] = "Some custom text" expect(mail.to_s).to match(/X-Foo-Bar: Some custom text/) end end describe "parsing emails with non usascii in the header" do it "should work" do mail = Mail.new('From: "Foo áëô îü" ') expect(mail.from).to eq ['extended@example.net'] expect(mail[:from].decoded).to eq '"Foo áëô îü" ' expect(mail[:from].encoded).to eq "From: =?UTF-8?B?Rm9vIMOhw6vDtCDDrsO8?= \r\n" end end describe "adding parts should preserve the charset of the mail" do charsets = ['UTF-8', 'ISO-8859-1', nil] charsets.each do |mail_charset| charsets.each do |part_charset| it "when #{mail_charset || 'nil'} vs #{part_charset || 'nil'}" do mail = Mail.new mail['charset'] = mail_charset expect(mail.charset).to eq mail_charset p = Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT', :charset => part_charset) expect(p.charset).to eq part_charset mail.add_part(p) expect(mail.charset).to eq mail_charset expect(p.charset).to eq part_charset end end end end describe "ordering messages" do it "should put all attachments as the last item" do mail = Mail.new mail.attachments['image.png'] = "\302\302\302\302" p = Mail::Part.new(:content_type => 'multipart/alternative') p.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) p.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) mail.add_part(p) mail.encoded expect(mail.parts[0].mime_type).to eq "multipart/alternative" expect(mail.parts[0].parts[0].mime_type).to eq "text/plain" expect(mail.parts[0].parts[1].mime_type).to eq "text/html" expect(mail.parts[1].mime_type).to eq "image/png" end it "should allow overwriting sort order" do mail = Mail.new mail.body.set_sort_order([]) mail.attachments['image.png'] = "\302\302\302\302" p = Mail::Part.new(:content_type => 'multipart/alternative') p.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) p.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) mail.add_part(p) mail.encoded expect(mail.parts[0].mime_type).to eq "multipart/alternative" expect(mail.parts[0].parts[0].mime_type).to eq "text/plain" expect(mail.parts[0].parts[1].mime_type).to eq "text/html" expect(mail.parts[1].mime_type).to eq "image/png" end end describe "attachment query methods" do it "shouldn't die with an invalid Content-Disposition header" do mail = Mail.new('Content-Disposition: invalid') expect { mail.attachment? }.not_to raise_error end it "shouldn't die with an invalid Content-Type header" do mail = Mail.new('Content-Type: invalid/invalid; charset="iso-8859-1"') mail.attachment? expect { mail.attachment? }.not_to raise_error end end describe "without_attachments!" do it "should delete all attachments" do emails_with_attachments = [ ['attachment_emails', 'attachment_content_disposition.eml'], ['attachment_emails', 'attachment_content_location.eml'], ['attachment_emails', 'attachment_pdf.eml'], ['attachment_emails', 'attachment_with_encoded_name.eml'], ['attachment_emails', 'attachment_with_quoted_filename.eml'], ['mime_emails', 'raw_email7.eml']] emails_with_attachments.each { |file_name| mail = read_fixture('emails', *file_name) non_attachment_parts = mail.all_parts.reject(&:attachment?) expect(mail.has_attachments?).to be_truthy mail.without_attachments! expect(mail.all_parts).to eq non_attachment_parts expect(mail.has_attachments?).to be_falsey } end end describe "replying" do describe "to a basic message" do before do @mail = read_fixture('emails', 'plain_emails', 'basic_email.eml') end it "should create a new message" do expect(@mail.reply).to be_a_kind_of(Mail::Message) end it "should be in-reply-to the original message" do expect(@mail.reply.in_reply_to).to eq '6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net' end it "should reference the original message" do expect(@mail.reply.references).to eq '6B7EC235-5B17-4CA8-B2B8-39290DEB43A3@test.lindsaar.net' end it "should Re: the original subject" do expect(@mail.reply.subject).to eq 'Re: Testing 123' end it "should be sent to the original sender" do expect(@mail.reply.to).to eq ['test@lindsaar.net'] expect(@mail.reply[:to].to_s).to eq 'Mikel Lindsaar ' end it "should be sent from the original recipient" do expect(@mail.reply.from).to eq ['raasdnil@gmail.com'] expect(@mail.reply[:from].to_s).to eq 'Mikel Lindsaar ' end it "should accept args" do expect(@mail.reply(:from => 'Donald Ball ').from).to eq ['donald.ball@gmail.com'] end it "should accept a block" do expect(@mail.reply { from('Donald Ball ') }.from).to eq ['donald.ball@gmail.com'] end end describe "to a message with an explicit reply-to address" do before do @mail = read_fixture('emails', 'rfc2822', 'example06.eml') end it "should be sent to the reply-to address" do expect(@mail.reply[:to].to_s).to eq '"Mary Smith: Personal Account" ' end end describe "to a message with more than one recipient" do before do @mail = read_fixture('emails', 'rfc2822', 'example03.eml') end it "should be sent from the first to address" do expect(@mail.reply[:from].to_s).to eq 'Mary Smith ' end end describe "to a reply" do before do @mail = read_fixture('emails', 'plain_emails', 'raw_email_reply.eml') end it "should be in-reply-to the original message" do expect(@mail.reply.in_reply_to).to eq '473FFE27.20003@xxx.org' end it "should append to the original's references list" do expect(@mail.reply[:references].message_ids).to eq ['473FF3B8.9020707@xxx.org', '348F04F142D69C21-291E56D292BC@xxxx.net', '473FFE27.20003@xxx.org'] end it "should not append another Re:" do expect(@mail.reply.subject).to eq "Re: Test reply email" end end describe "to a reply with an in-reply-to with a single message id but no references header" do before do @mail = Mail.new do in_reply_to '<1234@test.lindsaar.net>' message_id '5678@test.lindsaar.net' end end it "should have a references consisting of the in-reply-to and message_id fields" do expect(@mail.reply[:references].message_ids).to eq ['1234@test.lindsaar.net', '5678@test.lindsaar.net'] end end describe "to a reply with an in-reply-to with multiple message ids but no references header" do before do @mail = Mail.new do in_reply_to '<1234@test.lindsaar.net> <5678@test.lindsaar.net>' message_id '90@test.lindsaar.net' end end # Behavior is actually not defined in RFC2822, so we'll just leave it empty it "should have no references header" do expect(@mail.references).to be_nil end end end describe 'SMTP envelope From' do it 'should respond' do expect(Mail::Message.new).to respond_to(:smtp_envelope_from) end it 'should default to return_path, sender, or first from address' do message = Mail::Message.new do return_path 'return' sender 'sender' from 'from' end expect(message.smtp_envelope_from).to eq 'return' message.return_path = nil expect(message.smtp_envelope_from).to eq 'sender' message.sender = nil expect(message.smtp_envelope_from).to eq 'from' end it 'can be overridden' do message = Mail::Message.new { return_path 'return' } message.smtp_envelope_from = 'envelope_from' expect(message.smtp_envelope_from).to eq 'envelope_from' message.smtp_envelope_from = 'declared_from' expect(message.smtp_envelope_from).to eq 'declared_from' message.smtp_envelope_from = nil expect(message.smtp_envelope_from).to eq 'return' end end describe 'SMTP envelope To' do it 'should respond' do expect(Mail::Message.new).to respond_to(:smtp_envelope_to) end it 'should default to destinations' do message = Mail::Message.new do to 'to' cc 'cc' bcc 'bcc' end expect(message.smtp_envelope_to).to eq message.destinations end it 'can be overridden' do message = Mail::Message.new { to 'to' } message.smtp_envelope_to = 'envelope_to' expect(message.smtp_envelope_to).to eq %w(envelope_to) message.smtp_envelope_to = 'declared_to' expect(message.smtp_envelope_to).to eq %w(declared_to) message.smtp_envelope_to = nil expect(message.smtp_envelope_to).to eq %w(to) end end end mail-2.8.1/spec/mail/mime_messages_spec.rb000066400000000000000000000573261436372131700205210ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "MIME Emails" do describe "general helper methods" do it "should read a mime version from an email" do mail = Mail.new("Mime-Version: 1.0") expect(mail.mime_version).to eq '1.0' end it "should return nil if the email has no mime version" do mail = Mail.new("To: bob") expect(mail.mime_version).to be_nil end it "should read the content-transfer-encoding" do mail = Mail.new("Content-Transfer-Encoding: quoted-printable") expect(mail.content_transfer_encoding).to eq 'quoted-printable' end it "should read the content-description" do mail = Mail.new("Content-Description: This is a description") expect(mail.content_description).to eq 'This is a description' end it "should return the content-type" do mail = Mail.new("Content-Type: text/plain") expect(mail.mime_type).to eq 'text/plain' end it "should return the charset" do mail = Mail.new("Content-Type: text/plain; charset=utf-8") expect(mail.charset).to eq 'utf-8' end it "should allow you to set the charset" do mail = Mail.new mail.charset = 'utf-8' expect(mail.charset).to eq 'utf-8' end it "should return the main content-type" do mail = Mail.new("Content-Type: text/plain") expect(mail.main_type).to eq 'text' end it "should return the sub content-type" do mail = Mail.new("Content-Type: text/plain") expect(mail.sub_type).to eq 'plain' end it "should return the content-type parameters" do mail = Mail.new("Content-Type: text/plain; charset=US-ASCII; format=flowed") expect(mail.content_type_parameters).to eql({"charset" => 'US-ASCII', "format" => 'flowed'}) end describe 'a multipart email (raw_email7.eml)' do let(:mail) { read_fixture('emails', 'mime_emails', 'raw_email7.eml') } it "should recognize a multipart email" do expect(mail).to be_multipart end it "inspect_structure should return what is expected" do expect(mail.inspect_structure).to eq <<-End.chomp #{mail.inspect} 1. #{mail.parts[0].inspect} 1.1. #{mail.parts[0].parts[0].inspect} 1.2. #{mail.parts[0].parts[1].inspect} 1.3. #{mail.parts[0].parts[2].inspect} 1.4. #{mail.parts[0].parts[3].inspect} 2. #{mail.parts[1].inspect} End end end it "should recognize a non multipart email" do mail = read_fixture('emails', 'plain_emails', 'basic_email.eml') expect(mail).not_to be_multipart end it "should not report the email as :attachment?" do mail = read_fixture('emails', 'attachment_emails', 'attachment_pdf.eml') expect(mail.attachment?).to eq false end describe 'attachment_only_email.eml' do let(:mail) { read_fixture('emails', 'attachment_emails', 'attachment_only_email.eml') } it "should report the email as :attachment?" do expect(mail.attachment?).to eq true end it "inspect_structure should return what is expected" do expect(mail.inspect_structure).to eq mail.inspect end end it "should recognize an attachment part" do mail = read_fixture('emails', 'attachment_emails', 'attachment_pdf.eml') expect(mail).not_to be_attachment expect(mail.parts[0].attachment?).to eq false expect(mail.parts[1].attachment?).to eq true end it "should give how may (top level) parts there are" do mail = read_fixture('emails', 'mime_emails', 'raw_email7.eml') expect(mail.parts.length).to eq 2 end describe 'a multipart/alternative mail (raw_email11.eml)' do let(:mail) { read_fixture('emails', 'mime_emails', 'raw_email11.eml') } it "should give the content_type of each part" do expect(mail.mime_type).to eq 'multipart/alternative' expect(mail.parts[0].mime_type).to eq 'text/plain' expect(mail.parts[1].mime_type).to eq 'text/enriched' end it "inspect_structure should return what is expected" do expect(mail.inspect_structure).to eq <<-End.chomp #{mail.inspect} 1. #{mail.parts[0].inspect} 2. #{mail.parts[1].inspect} End end end it "should report the mail :has_attachments?" do mail = read_fixture('emails', 'attachment_emails', 'attachment_pdf.eml') expect(mail).to be_has_attachments end it "should only split on exact boundary matches" do mail = read_fixture('emails', 'mime_emails', 'email_with_similar_boundaries.eml') expect(mail.parts.size).to eq 2 expect(mail.parts.first.parts.size).to eq 2 expect(mail.boundary).to eq "----=_NextPart_476c4fde88e507bb8028170e8cf47c73" expect(mail.parts.first.boundary).to eq "----=_NextPart_476c4fde88e507bb8028170e8cf47c73_alt" end end describe "multipart emails" do it "should add a boundary if there is none defined and a part is added" do mail = Mail.new do part('This is a part') part('This is another part') end expect(mail.boundary).not_to be_nil end it "should not add a boundary for a message that is only an attachment" do mail = Mail.new mail.attachments['test.png'] = "2938492384923849" expect(mail.boundary).to be_nil end end describe "multipart/alternative emails" do it "should know what its boundary is if it is a multipart document" do mail = Mail.new('Content-Type: multipart/mixed; boundary="--==Boundary"') expect(mail.boundary).to eq "--==Boundary" end it "should return nil if there is no content-type defined" do mail = Mail.new expect(mail.boundary).to be_nil end it "should assign the text part and allow you to reference" do mail = Mail.new text_mail = Mail.new("This is Text") mail.text_part = text_mail expect(mail.text_part).to eq text_mail end it "should convert strings assigned to the text part into Mail::Part objects with sensible defaults" do mail = Mail.new mail.text_part = 'This is text' expect(mail.text_part.body).to eq 'This is text' expect(mail.text_part.content_type).to eq 'text/plain' end it "should not assign a nil text part" do mail = Mail.new mail.text_part = nil expect(mail.text_part).to be_nil end it "should assign the html part and allow you to reference" do mail = Mail.new html_mail = Mail.new("This is HTML") mail.html_part = html_mail expect(mail.html_part).to eq html_mail end it "should convert strings assigned to the html part into Mail::Part objects with sensible defaults" do mail = Mail.new mail.html_part = "This is HTML" expect(mail.html_part.body).to eq "This is HTML" expect(mail.html_part.content_type).to eq "text/html" end it "should not assign a nil html part" do mail = Mail.new mail.html_part = nil expect(mail.html_part).to be_nil end it "should set default content type on assigned text and html parts" do mail = Mail.new mail.text_part = Mail.new expect(mail.text_part.content_type).to eq 'text/plain' mail.html_part = Mail.new expect(mail.html_part.content_type).to eq 'text/html' end it "should set default content type on declared text and html parts" do mail = Mail.new mail.text_part { } expect(mail.text_part.content_type).to eq 'text/plain' mail.html_part { } expect(mail.html_part.content_type).to eq 'text/html' end it "should not override content type" do mail = Mail.new mail.text_part { content_type 'text/plain+foo' } expect(mail.text_part.content_type).to eq 'text/plain+foo' mail.html_part { content_type 'text/html+foo' } expect(mail.html_part.content_type).to eq 'text/html+foo' end it "should add the html part and text part" do mail = Mail.new mail.text_part = Mail::Part.new do body "This is Text" end mail.html_part = Mail::Part.new do content_type "text/html; charset=US-ASCII" body "This is HTML" end expect(mail.parts.length).to eq 2 expect(mail.parts.first.class).to eq Mail::Part expect(mail.parts.last.class).to eq Mail::Part end it "should remove the html part and back out of multipart/alternative if set to nil" do mail = Mail.new mail.text_part = Mail::Part.new mail.html_part = Mail::Part.new expect(mail.parts.length).to eq 2 mail.html_part = nil expect(mail.parts.length).to eq 1 expect(mail.boundary).to be_nil expect(mail.content_type).to be_nil end it "should remove the text part and back out of multipart/alternative if set to nil" do mail = Mail.new mail.text_part = Mail::Part.new mail.html_part = Mail::Part.new expect(mail.parts.length).to eq 2 mail.text_part = nil expect(mail.parts.length).to eq 1 expect(mail.boundary).to be_nil expect(mail.content_type).to be_nil end it "should set the content type to multipart/alternative if you assign html and text parts" do mail = Mail.new mail.text_part = Mail::Part.new do body "This is Text" end mail.html_part = Mail::Part.new do content_type "text/html; charset=US-ASCII" body "This is HTML" end expect(mail.to_s).to match(%r|Content-Type: multipart/alternative;\s+boundary="#{mail.boundary}"|) end it "should set the content type to multipart/alternative if you declare html and text parts" do mail = Mail.new mail.text_part { } mail.html_part { } expect(mail.to_s).to match(%r|Content-Type: multipart/alternative;\s+boundary="#{mail.boundary}"|) end it "should not set the content type to multipart/alternative if you declare an html part but not a text part" do mail = Mail.new mail.html_part { } expect(mail.to_s).not_to match(%r|Content-Type: multipart/alternative;\s+boundary="#{mail.boundary}"|) end it "should not set the content type to multipart/alternative if you declare a text part but not an html part" do mail = Mail.new mail.text_part { } expect(mail.to_s).not_to match(%r|Content-Type: multipart/alternative;\s+boundary="#{mail.boundary}"|) end it "should add the end boundary tag" do mail = Mail.new mail.text_part = Mail::Part.new do body "This is Text" end mail.html_part = Mail::Part.new do content_type "text/html; charset=US-ASCII" body "This is HTML" end expect(mail.to_s).to match(%r|#{mail.boundary}--|) end it "should not put message-ids into parts" do mail = Mail.new('Subject: FooBar') mail.text_part = Mail::Part.new do body "This is Text" end mail.html_part = Mail::Part.new do content_type "text/html; charset=US-ASCII" body "This is HTML" end mail.to_s expect(mail.parts.first.message_id).to be_nil expect(mail.parts.last.message_id).to be_nil end it "should create a multipart/alternative email through a block" do mail = Mail.new do to 'nicolas.fouche@gmail.com' from 'Mikel Lindsaar ' subject 'First multipart email sent with Mail' text_part do body 'This is plain text' end html_part do content_type 'text/html; charset=UTF-8' body '

    This is HTML

    ' end end expect(mail).to be_multipart expect(mail.parts.length).to eq 2 expect(mail.text_part.class).to eq Mail::Part expect(mail.text_part.body.to_s).to eq 'This is plain text' expect(mail.html_part.class).to eq Mail::Part expect(mail.html_part.body.to_s).to eq '

    This is HTML

    ' end it "should detect an html_part in an existing email" do m = Mail.new(:content_type => 'multipart/alternative') m.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) m.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) expect(m.text_part.body.decoded).to eq 'PLAIN TEXT' expect(m.html_part.body.decoded).to eq 'HTML TEXT' end it "should detect a text_part in an existing email with plain text attachment" do m = Mail.new(:content_type => 'multipart/alternative') m.add_file(fixture_path('attachments', 'てすと.txt')) m.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) m.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) expect(m.text_part.body.decoded).to eq 'PLAIN TEXT' expect(m.html_part.body.decoded).to eq 'HTML TEXT' end it "should detect an html_part in a multi level mime email" do m = Mail.new(:content_type => 'multipart/mixed') a = Mail::Part.new(:content_type => 'text/script', :body => '12345') p = Mail::Part.new(:content_type => 'multipart/alternative') p.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) p.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) m.add_part(p) m.add_part(a) expect(m.text_part.body.decoded).to eq 'PLAIN TEXT' expect(m.html_part.body.decoded).to eq 'HTML TEXT' end it "should only the first part on a stupidly overly complex email" do m = Mail.new(:content_type => 'multipart/mixed') a = Mail::Part.new(:content_type => 'text/script', :body => '12345') m.add_part(a) b = Mail::Part.new(:content_type => 'multipart/alternative') b.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML TEXT')) b.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN TEXT')) m.add_part(b) c = Mail::Part.new(:content_type => 'multipart/alternative') c.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML 2 TEXT')) c.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN 2 TEXT')) b.add_part(c) d = Mail::Part.new(:content_type => 'multipart/alternative') d.add_part(Mail::Part.new(:content_type => 'text/html', :body => 'HTML 3 TEXT')) d.add_part(Mail::Part.new(:content_type => 'text/plain', :body => 'PLAIN 3 TEXT')) b.add_part(d) expect(m.text_part.body.decoded).to eq 'PLAIN TEXT' expect(m.html_part.body.decoded).to eq 'HTML TEXT' end end describe "finding attachments" do it "should return an array of attachments" do mail = read_fixture('emails', 'attachment_emails', 'attachment_content_disposition.eml') expect(mail.attachments.length).to eq 1 expect(mail.attachments.first.filename).to eq 'api.rb' end it "should return an array of attachments" do mail = read_fixture('emails', 'mime_emails', 'raw_email_with_nested_attachment.eml') expect(mail.attachments.length).to eq 2 expect(mail.attachments[0].filename).to eq 'truncated.png' expect(mail.attachments[1].filename).to eq 'smime.p7s' end Dir.glob(fixture_path('attachments', "test.*")).each do |test_attachment| it "should find binary encoded attachments of type #{File.extname(test_attachment)}" do pre, post = read_raw_fixture('emails', 'mime_emails', 'raw_email_with_binary_encoded.eml').split('BINARY_CONTENT_GOES_HERE') raw_file = File.open(test_attachment, "rb", &:read) raw_mail = pre + raw_file + post expect(raw_mail.encoding).to eq(Encoding::ASCII_8BIT) if raw_mail.respond_to?(:encoding) mail = Mail.new(raw_mail) expect(mail.attachments.size).to eq 1 expect(mail.attachments.first.decoded.bytesize).to eq raw_file.bytesize expect(mail.attachments.first.decoded).to eq raw_file end end end describe "adding a file attachment" do it "should set to multipart/mixed if a text part and you add an attachment" do mail = Mail::Message.new mail.text_part { body("log message goes here") } mail.add_file(fixture_path('attachments', 'test.png')) expect(mail.mime_type).to eq 'multipart/mixed' end it "should set to multipart/mixed if you add an attachment and then a text part" do mail = Mail::Message.new mail.add_file(fixture_path('attachments', 'test.png')) mail.text_part { body("log message goes here") } expect(mail.mime_type).to eq 'multipart/mixed' end it "should add a part given a filename" do mail = Mail::Message.new mail.add_file(fixture_path('attachments', 'test.png')) expect(mail.parts.length).to eq 1 # First part is an empty text body end it "should give the part the right content type" do mail = Mail::Message.new mail.add_file(fixture_path('attachments', 'test.png')) expect(mail.parts.first[:content_type].content_type).to eq 'image/png' end it "should return attachment objects" do mail = Mail::Message.new mail.add_file(fixture_path('attachments', 'test.png')) expect(mail.attachments.first.class).to eq Mail::Part end it "should be return an aray of attachments" do mail = Mail::Message.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') add_file fixture_path('attachments', 'test.jpg') add_file fixture_path('attachments', 'test.pdf') add_file fixture_path('attachments', 'test.zip') end expect(mail.attachments.length).to eq 4 mail.attachments.each { |a| expect(a.class).to eq Mail::Part } end it "should return the filename of each attachment" do mail = Mail::Message.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') add_file fixture_path('attachments', 'test.jpg') add_file fixture_path('attachments', 'test.pdf') add_file fixture_path('attachments', 'test.zip') end expect(mail.attachments[0].filename).to eq 'test.png' expect(mail.attachments[1].filename).to eq 'test.jpg' expect(mail.attachments[2].filename).to eq 'test.pdf' expect(mail.attachments[3].filename).to eq 'test.zip' end it "should return the type/subtype of each attachment" do mail = Mail::Message.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') add_file fixture_path('attachments', 'test.jpg') add_file fixture_path('attachments', 'test.pdf') add_file fixture_path('attachments', 'test.zip') end expect(mail.attachments[0].mime_type).to eq 'image/png' expect(mail.attachments[1].mime_type).to eq 'image/jpeg' expect(mail.attachments[2].mime_type).to eq 'application/pdf' expect(mail.attachments[3].mime_type).to eq 'application/zip' end it "should return the content of each attachment" do mail = Mail::Message.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') add_file fixture_path('attachments', 'test.jpg') add_file fixture_path('attachments', 'test.pdf') add_file fixture_path('attachments', 'test.zip') end tripped = mail.attachments[0].decoded original = read_raw_fixture('attachments', 'test.png') expect(tripped).to eq original tripped = mail.attachments[1].decoded original = read_raw_fixture('attachments', 'test.jpg') expect(tripped).to eq original tripped = mail.attachments[2].decoded original = read_raw_fixture('attachments', 'test.pdf') expect(tripped).to eq original tripped = mail.attachments[3].decoded original = read_raw_fixture('attachments', 'test.zip') expect(tripped).to eq original end it "should allow you to send in file data instead of having to read it" do file_data = read_raw_fixture('attachments', 'test.png') mail = Mail::Message.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file(:filename => 'test.png', :content => file_data) end tripped = mail.attachments[0].decoded original = read_raw_fixture('attachments', 'test.png') expect(tripped).to eq original end it "should support :mime_type option" do mail = Mail::Message.new mail.add_file(:filename => 'test.png', :content => 'a', :mime_type=>'text/plain') expect(mail.attachments.first.content_type).to eq 'text/plain' end it "should be able to add a body before adding a file" do m = Mail.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' body "Attached" add_file fixture_path('attachments', 'test.png') end expect(m.attachments.length).to eq 1 expect(m.parts.length).to eq 2 expect(m.parts[0].body).to eq "Attached" expect(m.parts[1].filename).to eq "test.png" end it "should allow you to add a body as text part if you have added a file" do m = Mail.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') body "Attached" end expect(m.parts.length).to eq 2 expect(m.parts.first[:content_type].content_type).to eq 'image/png' expect(m.parts.last[:content_type].content_type).to eq 'text/plain' end it "should allow you to add a body as text part if you have added a file and not truncate after newlines - issue 208" do m = Mail.new do from 'mikel@from.lindsaar.net' subject 'Hello there Mikel' to 'mikel@to.lindsaar.net' add_file fixture_path('attachments', 'test.png') body "First Line\n\nSecond Line\n\nThird Line\n\n" #Note: trailing \n\n is stripped off by Mail::Part initialization end expect(m.parts.length).to eq 2 expect(m.parts.first[:content_type].content_type).to eq 'image/png' expect(m.parts.last[:content_type].content_type).to eq 'text/plain' expect(m.parts.last.to_s).to match(/^First Line\r\n\r\nSecond Line\r\n\r\nThird Line/) end it "should not raise a warning if there is a charset defined and there are non ascii chars in the body" do body = "This is NOT plain text ASCII − かきくけこ" mail = Mail.new mail.body = body mail.charset = 'UTF-8' mail.add_file fixture_path('attachments', 'test.png') expect { mail.to_s }.to_not output.to_stderr end end end mail-2.8.1/spec/mail/multibyte_spec.rb000066400000000000000000000012501436372131700177020ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' require 'mail/multibyte/chars' describe Mail::Multibyte::Chars do it "should upcase" do chars = described_class.new('Laurent, où sont les tests ?') expect(chars.upcase).to eq("LAURENT, OÙ SONT LES TESTS ?") end it "should downcase" do chars = described_class.new('VĚDA A VÝZKUM') expect(chars.downcase).to eq("věda a výzkum") end if 'string'.respond_to?(:force_encoding) it "doesn't mutate input string encoding" do s = 'ascii'.dup.force_encoding(Encoding::US_ASCII) described_class.new(s) expect(s.encoding).to eq(Encoding::US_ASCII) end end end mail-2.8.1/spec/mail/multipart_report_spec.rb000066400000000000000000000100051436372131700212760ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "multipart/report emails" do it "should know if it is a multipart report type" do mail = read_fixture('emails', 'multipart_report_emails', 'report_422.eml') expect(mail).to be_multipart_report end describe "delivery-status reports" do it "should know if it is a deliver-status report" do mail = read_fixture('emails', 'multipart_report_emails', 'report_422.eml') expect(mail).to be_delivery_status_report end it "should find its message/delivery-status part" do mail = read_fixture('emails', 'multipart_report_emails', 'report_422.eml') expect(mail.delivery_status_part).not_to be_nil end it "should handle a report that has a human readable message/delivery-status" do mail = read_fixture('emails', 'multipart_report_emails', 'multipart_report_multiple_status.eml') expect(mail).to be_bounced end describe "delivery-status part in a non report email" do let(:mail){ string = read_raw_fixture('emails', 'multipart_report_emails', 'report_422.eml') Mail.read_from_string(string.sub("multipart/report; report-type=delivery-status;", "multipart/mixed;")) } it "does not return a delivery_status_part" do expect(mail.delivery_status_part).to be_nil end end describe "multipart reports with more than one address" do it "should not crash" do mail1 = read_fixture('emails', 'multipart_report_emails', 'multi_address_bounce1.eml') mail2 = read_fixture('emails', 'multipart_report_emails', 'multi_address_bounce2.eml') expect { mail1.bounced? }.not_to raise_error expect { mail2.bounced? }.not_to raise_error end it "should not know that a multi address email was bounced" do mail1 = read_fixture('emails', 'multipart_report_emails', 'multi_address_bounce1.eml') mail2 = read_fixture('emails', 'multipart_report_emails', 'multi_address_bounce2.eml') expect(mail1).to be_bounced expect(mail2).to be_bounced end end describe "temporary failure" do before(:each) do @mail = read_fixture('emails', 'multipart_report_emails', 'report_422.eml') end it "should be bounced" do expect(@mail).not_to be_bounced end it "should say action 'delayed'" do expect(@mail.action).to eq 'delayed' end it "should give a final recipient" do expect(@mail.final_recipient).to eq 'RFC822; fraser@oooooooo.com.au' end it "should give an error code" do expect(@mail.error_status).to eq '4.2.2' end it "should give a diagostic code" do expect(@mail.diagnostic_code).to eq 'SMTP; 452 4.2.2 ... Mailbox full' end it "should give a remote-mta" do expect(@mail.remote_mta).to eq 'DNS; mail.oooooooo.com.au' end it "should be retryable" do expect(@mail).to be_retryable end end describe "permanent failure" do before(:each) do @mail = read_fixture('emails', 'multipart_report_emails', 'report_530.eml') end it "should be bounced" do expect(@mail).to be_bounced end it "should say action 'failed'" do expect(@mail.action).to eq 'failed' end it "should give a final recipient" do expect(@mail.final_recipient).to eq 'RFC822; edwin@zzzzzzz.com' end it "should give an error code" do expect(@mail.error_status).to eq '5.3.0' end it "should give a diagostic code" do expect(@mail.diagnostic_code).to eq 'SMTP; 553 5.3.0 ... Unknown E-Mail Address' end it "should give a remote-mta" do expect(@mail.remote_mta).to eq 'DNS; mail.zzzzzz.com' end it "should be retryable" do expect(@mail).not_to be_retryable end end end end mail-2.8.1/spec/mail/network/000077500000000000000000000000001436372131700160205ustar00rootroot00000000000000mail-2.8.1/spec/mail/network/delivery_methods/000077500000000000000000000000001436372131700213665ustar00rootroot00000000000000mail-2.8.1/spec/mail/network/delivery_methods/exim_spec.rb000066400000000000000000000055361436372131700237000ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "exim delivery agent" do let :mail do Mail.new do from 'roger@test.lindsaar.net' to 'marcel@test.lindsaar.net, bob@test.lindsaar.net' subject 'some subject' end end before do Mail.defaults do delivery_method :exim end end it "should send an email using exim" do expect(mail.delivery_method).to receive(:popen).with(%w[ /usr/sbin/exim -i -t -f roger@test.lindsaar.net ]) mail.deliver! end describe "return path" do it "should send an email with a return-path using exim" do expect(mail.delivery_method).to receive(:popen).with(%w[ /usr/sbin/exim -i -t -f return@test.lindsaar.net ]) mail.return_path = "return@test.lindsaar.net" mail.sender = "sender@test.lindsaar.net" mail.deliver end it "should use the sender address is no return path is specified" do expect(mail.delivery_method).to receive(:popen).with(%w[ /usr/sbin/exim -i -t -f sender@test.lindsaar.net ]) mail.sender = "sender@test.lindsaar.net" mail.deliver end it "should use the from address is no return path or sender are specified" do expect(mail.delivery_method).to receive(:popen).with(%w[ /usr/sbin/exim -i -t -f from@test.lindsaar.net ]) mail.from = "from@test.lindsaar.net" mail.deliver end it "should escape the return path address" do expect(mail.delivery_method).to receive(:popen).with([ '/usr/sbin/exim', '-i', '-t', '-f', '"from+suffix test"@test.lindsaar.net' ]) mail.from = '"from+suffix test"@test.lindsaar.net' mail.deliver end it 'should not escape ~ in return path address' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/exim -i -t -f tilde~@test.lindsaar.net ]) mail.from = 'tilde~@test.lindsaar.net' mail.deliver end end it "should still send an email if the settings have been set to nil" do expect(mail.delivery_method).to receive(:popen).with(%w[ /usr/sbin/exim -f roger@test.lindsaar.net ]) mail.delivery_method.settings[:arguments] = nil mail.deliver! end it "should escape evil haxxor attemptes" do evil = '"foo\";touch /tmp/PWNED;\""@blah.com' expect(mail.delivery_method).to receive(:popen).with( [ '/usr/sbin/exim', '-i', '-t', '-f', evil ]) mail.from = evil mail.deliver! end it "should raise an error if no sender is defined" do mail.from = nil expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do mail.to = nil expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error('SMTP To address may not be blank: []') end end mail-2.8.1/spec/mail/network/delivery_methods/file_delivery_spec.rb000066400000000000000000000073531436372131700255570ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "SMTP Delivery Method" do before(:each) do # Reset all defaults back to an original state Mail.defaults do delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true } end end after(:each) do files = Dir.glob(File.join(Mail.delivery_method.settings[:location], '*')) files.each do |file| File.delete(file) end end describe "general usage" do tmpdir = File.expand_path('../../../../tmp/mail', __FILE__) it "should send an email to a file" do Mail.defaults do delivery_method :file, :location => tmpdir end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end delivery = File.join(Mail.delivery_method.settings[:location], 'marcel@amont.com') expect(File.read(delivery)).to eq "#{mail.encoded}\r\n\r\n" end it "should send multiple emails to multiple files" do Mail.defaults do delivery_method :file, :location => tmpdir end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com, bob@me.com' subject 'invalid RFC2822' end delivery_one = File.join(Mail.delivery_method.settings[:location], 'marcel@amont.com') delivery_two = File.join(Mail.delivery_method.settings[:location], 'bob@me.com') expect(File.read(delivery_one)).to eq "#{mail.encoded}\r\n\r\n" expect(File.read(delivery_two)).to eq "#{mail.encoded}\r\n\r\n" end it "should only create files based on the addr_spec of the destination" do Mail.defaults do delivery_method :file, :location => tmpdir end Mail.deliver do from 'roger@moore.com' to '"Long, stupid email address" ' subject 'invalid RFC2822' end delivery = File.join(Mail.delivery_method.settings[:location], 'mikel@test.lindsaar.net') expect(File.exist?(delivery)).to be_truthy end it "should use the base name of the file name to prevent file system traversal" do Mail.defaults do delivery_method :file, :location => tmpdir end Mail.deliver do from 'roger@moore.com' to '../../../../../../../../../../../tmp/pwn' subject 'evil hacker' end delivery = File.join(Mail.delivery_method.settings[:location], 'pwn') expect(File.exist?(delivery)).to be_truthy end it "should not raise errors if no sender is defined" do Mail.defaults do delivery_method :file, :location => tmpdir end mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do Mail.defaults do delivery_method :file, :location => tmpdir end mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error('SMTP To address may not be blank: []') end end end mail-2.8.1/spec/mail/network/delivery_methods/logger_delivery_spec.rb000066400000000000000000000042601436372131700261110ustar00rootroot00000000000000# encoding: utf-8 require 'spec_helper' require 'logger' require 'stringio' describe "Logger Delivery Method" do before(:each) do # Reset all defaults back to original state Mail.defaults do delivery_method :smtp, :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true end end let(:mail) do Mail.new do from 'dschrute@dm.com' to 'mscarn@dm.com' subject 'Beet Bandit' end end it "sends an email to $stdout with 'info' severity by default" do Mail.defaults do delivery_method :logger end logger = mail.delivery_method.logger expect(logger).to receive(:log).with(Logger::INFO) { mail.encoded } mail.deliver! end it "can be configured with a custom logger and severity" do custom_logger = double("custom_logger") Mail.defaults do delivery_method :logger, :logger => custom_logger, :severity => :debug end expect(custom_logger).to receive(:log).with(Logger::DEBUG) { mail.encoded } mail.deliver! end describe "sender and recipient validation" do it "should not raise errors if no sender is defined" do Mail.defaults do delivery_method :logger, :logger => Logger.new(StringIO.new) end mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do Mail.defaults do delivery_method :logger, :logger => Logger.new(StringIO.new) end mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error('SMTP To address may not be blank: []') end end end mail-2.8.1/spec/mail/network/delivery_methods/sendmail_spec.rb000066400000000000000000000124561436372131700245310ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::Sendmail do let :mail do Mail.new do from 'roger@test.lindsaar.net' to 'marcel@test.lindsaar.net, bob@test.lindsaar.net' subject 'some subject' end end before do Mail.defaults do delivery_method :sendmail end end it 'sends an email using sendmail' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ]) mail.deliver! end it 'spawns a sendmail process' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ]) mail.deliver! end context 'SMTP From' do it 'explicitly passes an envelope From address to sendmail' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f smtp_from@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ]) mail.smtp_envelope_from = 'smtp_from@test.lindsaar.net' mail.deliver end it 'escapes the From address' do expect(mail.delivery_method).to receive(:popen). with([ '/usr/sbin/sendmail', '-i', '-f', '"from+suffix test"@test.lindsaar.net', '--', 'marcel@test.lindsaar.net', 'bob@test.lindsaar.net' ]) mail.from = '"from+suffix test"@test.lindsaar.net' mail.deliver end it 'does not escape ~ in From address' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f tilde~@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ]) mail.from = 'tilde~@test.lindsaar.net' mail.deliver end end context 'SMTP To' do it 'explicitly passes envelope To addresses to sendmail' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- smtp_to@test.lindsaar.net ]) mail.smtp_envelope_to = 'smtp_to@test.lindsaar.net' mail.deliver end it 'escapes the To address' do expect(mail.delivery_method).to receive(:popen). with([ '/usr/sbin/sendmail', '-i', '-f', 'roger@test.lindsaar.net', '--', '"to+suffix test"@test.lindsaar.net' ]) mail.to = '"to+suffix test"@test.lindsaar.net' mail.deliver end it 'does not escape ~ in To address' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- tilde~@test.lindsaar.net ]) mail.to = 'tilde~@test.lindsaar.net' mail.deliver end it 'quotes the destinations to ensure leading -hyphen doesn\'t confuse sendmail' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- -hyphen@test.lindsaar.net ]) mail.to = '-hyphen@test.lindsaar.net' mail.deliver end end it 'still sends an email if the arguments setting have been set to nil' do expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -f roger@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ]) mail.delivery_method.settings[:arguments] = nil mail.deliver! end it 'escapes evil haxxor attempts' do evil = '"foo\";touch /tmp/PWNED;\""@blah.com' expect(mail.delivery_method).to receive(:popen). with([ '/usr/sbin/sendmail', '-i', '-f', evil, '--', evil ]) mail.from = evil mail.to = evil mail.deliver! end it 'raises on nonzero exitstatus' do command = %w[ /usr/sbin/sendmail -i -f roger@test.lindsaar.net -- marcel@test.lindsaar.net bob@test.lindsaar.net ] args = [ command, 'w+' ] args << { :err => :out } expect(IO).to receive(:popen).with(*args) { system 'false' } expect do mail.deliver end.to raise_error('Delivery failed with exitstatus 1: ["/usr/sbin/sendmail", "-i", "-f", "roger@test.lindsaar.net", "--", "marcel@test.lindsaar.net", "bob@test.lindsaar.net"]') end it 'raises an error if no sender is defined' do mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it 'raises an error if no recipient is defined' do mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver! end.to raise_error('SMTP To address may not be blank: []') end it 'allows for legacy callers with :arguments strings' do expect(Kernel).to receive(:warn).with(/:arguments of type String is deprecated/) Mail.defaults do delivery_method :sendmail, :arguments => '-i -t' end expect(mail.delivery_method).to receive(:popen). with(%w[ /usr/sbin/sendmail -i -t -f "roger@test.lindsaar.net" -- "marcel@test.lindsaar.net" "bob@test.lindsaar.net" ].join(' ')) mail.deliver! end end mail-2.8.1/spec/mail/network/delivery_methods/smtp_connection_spec.rb000066400000000000000000000057241436372131700261370ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "SMTP Delivery Method" do before(:each) do Mail.defaults do smtp = Net::SMTP.start('127.0.0.1', 25) delivery_method :smtp_connection, :connection => smtp end end after(:each) do Mail.delivery_method.smtp.finish end it "should not dot-stuff unterminated last line with no leading dot" do body = "this is a test\n.\nonly a test" Mail.deliver do from 'from@example.com' to 'to@example.com' subject 'dot-stuff last line' body "this is a test\n.\nonly a test" end message = MockSMTP.deliveries.first expect(Mail.new(message).decoded).to eq("this is a test\n.\nonly a test") end it "should not dot-stuff newline-terminated last line" do Mail.deliver do from 'from@example.com' to 'to@example.com' subject 'dot-stuff last line' body "this is a test\n.\nonly a test\n.\n" end message = MockSMTP.deliveries.first expect(Mail.new(message).decoded).to eq("this is a test\n.\nonly a test\n.\n") end it "should send an email using open SMTP connection" do mail = Mail.deliver do from 'roger@test.lindsaar.net' to 'marcel@test.lindsaar.net, bob@test.lindsaar.net' subject 'invalid RFC2822' smtp_envelope_from 'smtp_from' smtp_envelope_to 'smtp_to' end expect(MockSMTP.deliveries[0][0]).to eq mail.encoded expect(MockSMTP.deliveries[0][1]).to eq 'smtp_from' expect(MockSMTP.deliveries[0][2]).to eq %w(smtp_to) end it "should be able to return actual SMTP protocol response" do Mail.defaults do smtp = Net::SMTP.start('127.0.0.1', 25) delivery_method :smtp_connection, :connection => smtp, :port => 587, :return_response => true end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end response = mail.deliver! expect(response).to eq 'OK' end it "should not raise errors if no sender is defined" do Mail.defaults do smtp = Net::SMTP.start('127.0.0.1', 25) delivery_method :smtp_connection, :connection => smtp, :port => 587, :return_response => true end mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do Mail.defaults do smtp = Net::SMTP.start('127.0.0.1', 25) delivery_method :smtp_connection, :connection => smtp, :port => 587, :return_response => true end mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error('SMTP To address may not be blank: []') end end mail-2.8.1/spec/mail/network/delivery_methods/smtp_spec.rb000066400000000000000000000267351436372131700237250ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "SMTP Delivery Method" do before(:each) do MockSMTP.reset # Reset all defaults back to original state Mail.defaults { delivery_method :smtp, {} } end describe "general usage" do it "should send emails from given settings" do mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' smtp_envelope_from 'smtp_from' smtp_envelope_to 'smtp_to' end expect(MockSMTP.deliveries[0][0]).to eq mail.encoded expect(MockSMTP.deliveries[0][1]).to eq 'smtp_from' expect(MockSMTP.deliveries[0][2]).to eq %w(smtp_to) end it "should be able to send itself" do mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end mail.deliver! expect(MockSMTP.deliveries[0][0]).to eq mail.encoded expect(MockSMTP.deliveries[0][1]).to eq mail.from[0] expect(MockSMTP.deliveries[0][2]).to eq mail.destinations end it "should be able to return actual SMTP protocol response" do Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587, :return_response => true end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end response = mail.deliver! expect(response).to eq 'OK' end end describe "enabling tls" do def redefine_verify_none(new_value) OpenSSL::SSL.send(:remove_const, :VERIFY_NONE) OpenSSL::SSL.send(:const_set, :VERIFY_NONE, new_value) end it "should use OpenSSL::SSL::VERIFY_NONE if a context" do # config can't be setup until redefined redefine_verify_none(OpenSSL::SSL::SSLContext.new) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587 end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end it "should ignore OpenSSL::SSL::VERIFY_NONE if it is 0" do # config can't be setup until redefined redefine_verify_none(0) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587 end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end end describe "enabling ssl" do def redefine_verify_none(new_value) OpenSSL::SSL.send(:remove_const, :VERIFY_NONE) OpenSSL::SSL.send(:const_set, :VERIFY_NONE, new_value) end it "should use OpenSSL::SSL::VERIFY_NONE if a context" do # config can't be setup until redefined redefine_verify_none(OpenSSL::SSL::SSLContext.new) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587, :tls => true end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end it "should ignore OpenSSL::SSL::VERIFY_NONE if it is 0" do # config can't be setup until redefined redefine_verify_none(0) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587, :tls => true end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end it "should not set verify mode when none is given" do context = OpenSSL::SSL::SSLContext.new allow(Net::SMTP).to receive(:default_ssl_context).and_return(context) expect(context).to_not receive(:verify_mode=) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587, :tls => true end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end it "should set verify mode if one is given" do context = OpenSSL::SSL::SSLContext.new allow(Net::SMTP).to receive(:default_ssl_context).and_return(context) expect(context).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER).at_least(1) Mail.defaults do delivery_method :smtp, :address => 'smtp.mockup.com', :port => 587, :tls => true, :openssl_verify_mode => OpenSSL::SSL::VERIFY_PEER end mail = Mail.deliver do from 'roger@moore.com' to 'marcel@amont.com' subject 'invalid RFC2822' end expect { mail.deliver! }.not_to raise_error end end describe "enabling STARTTLS" do it 'should default to automatically detecting STARTTLS' do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' end message.deliver! expect(MockSMTP.starttls).to eq :auto end it 'should allow forcing STARTTLS' do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls => true } end message.deliver! expect(MockSMTP.starttls).to eq :always end it 'should allow disabling automatic STARTTLS' do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls => false } end message.deliver! expect(MockSMTP.starttls).to eq false end it 'should allow forcing STARTTLS auto' do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true } end message.deliver! expect(MockSMTP.starttls).to eq :auto end it 'should allow disabling automatic STARTTLS auto' do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => false } end message.deliver! expect(MockSMTP.starttls).to eq false end end describe "SMTP Envelope" do it "uses the envelope From and To addresses" do Mail.deliver do to "to@someemail.com" from "from@someemail.com" message_id "<1234@someemail.com>" body "body" smtp_envelope_to "smtp_to@someemail.com" smtp_envelope_from "smtp_from@someemail.com" end expect(MockSMTP.deliveries[0][1]).to eq 'smtp_from@someemail.com' expect(MockSMTP.deliveries[0][2]).to eq %w(smtp_to@someemail.com) end it "supports the null sender in the envelope from address" do Mail.deliver do to "to@someemail.com" from "from@someemail.com" message_id "<1234@someemail.com>" body "body" smtp_envelope_to "smtp_to@someemail.com" smtp_envelope_from Mail::Constants::NULL_SENDER end expect(MockSMTP.deliveries[0][1]).to eq '<>' expect(MockSMTP.deliveries[0][2]).to eq %w(smtp_to@someemail.com) end it "should raise an error if there is no envelope From address" do mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error(ArgumentError, 'SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error(ArgumentError, 'SMTP To address may not be blank: []') end it "should raise on SMTP injection via MAIL FROM newlines" do addr = "inject.from@example.com>\r\nDATA" mail = Mail.new do from addr to "to@somemail.com" end expect(mail.smtp_envelope_from).to eq addr expect do mail.deliver end.to raise_error(ArgumentError, "SMTP From address may not contain CR or LF line breaks: #{addr.inspect}") end it "should raise on SMTP injection via RCPT TO newlines" do addr = "inject.to@example.com>\r\nDATA" mail = Mail.new do from "from@somemail.com" to addr end expect(mail.smtp_envelope_to).to eq [addr] expect do mail.deliver end.to raise_error(ArgumentError, "SMTP To address may not contain CR or LF line breaks: #{addr.inspect}") end it "should raise on SMTP injection via MAIL FROM overflow" do addr = "inject.from@example.com#{'m' * 2000}" mail = Mail.new do from addr to "to@somemail.com" end expect(mail.smtp_envelope_from).to eq addr expect do mail.deliver end.to raise_error(ArgumentError, "SMTP From address may not exceed 2000 bytes: #{addr.inspect}") end it "should raise on SMTP injection via RCPT TO overflow" do addr = "inject.to@example.com#{'m' * 2000}" mail = Mail.new do from "from@somemail.com" to addr end expect(mail.smtp_envelope_to).to eq [addr] expect do mail.deliver end.to raise_error(ArgumentError, "SMTP To address may not exceed 2000 bytes: #{addr.inspect}") end end end mail-2.8.1/spec/mail/network/delivery_methods/test_mailer_spec.rb000066400000000000000000000050321436372131700252350ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "Mail::TestMailer" do before(:each) do # Reset all defaults back to original state Mail.defaults do delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true } Mail::TestMailer.deliveries.clear end end it "should have no deliveries when first initiated" do Mail.defaults do delivery_method :test end expect(Mail::TestMailer.deliveries).to be_empty end it "should deliver an email to the Mail::TestMailer.deliveries array" do Mail.defaults do delivery_method :test end mail = Mail.new do to 'mikel@me.com' from 'you@you.com' subject 'testing' body 'hello' end mail.deliver expect(Mail::TestMailer.deliveries.length).to eq 1 expect(Mail::TestMailer.deliveries.first).to eq mail end it "should clear the deliveries when told to" do Mail.defaults do delivery_method :test end mail = Mail.new do to 'mikel@me.com' from 'you@you.com' subject 'testing' body 'hello' end mail.deliver expect(Mail::TestMailer.deliveries.length).to eq 1 Mail::TestMailer.deliveries.clear expect(Mail::TestMailer.deliveries).to be_empty end it "should not raise errors if no sender is defined" do Mail.defaults do delivery_method :test end mail = Mail.new do to "to@somemail.com" subject "Email with no sender" body "body" end expect(mail.smtp_envelope_from).to be_nil expect do mail.deliver end.to raise_error('SMTP From address may not be blank: nil') end it "should raise an error if no recipient if defined" do Mail.defaults do delivery_method :test end mail = Mail.new do from "from@somemail.com" subject "Email with no recipient" body "body" end expect(mail.smtp_envelope_to).to eq([]) expect do mail.deliver end.to raise_error('SMTP To address may not be blank: []') end it "should save settings passed to initialize" do expect(Mail::TestMailer.new(:setting => true).settings).to include(:setting => true) end end mail-2.8.1/spec/mail/network/retriever_methods/000077500000000000000000000000001436372131700215525ustar00rootroot00000000000000mail-2.8.1/spec/mail/network/retriever_methods/imap_spec.rb000066400000000000000000000244521436372131700240460ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "IMAP Retriever" do before(:each) do Mail.defaults do retriever_method :imap, { :address => 'localhost', :port => 993, :user_name => nil, :password => nil, :enable_ssl => true, :enable_starttls => false } end end describe "find with and without block" do it "should find all emails with a given block" do expect(MockIMAP).to be_disconnected messages = [] Mail.all do |message| messages << message end expect(messages.map { |m| m.raw_source }.sort).to eq MockIMAP.examples.map { |m| m.attr['RFC822']}.sort expect(MockIMAP).to be_disconnected end it "should get all emails without a given block" do expect(MockIMAP).to be_disconnected messages = Mail.all expect(messages.map { |m| m.raw_source }.sort).to eq MockIMAP.examples.map { |m| m.attr['RFC822']}.sort expect(MockIMAP).to be_disconnected end it "should get all emails and yield the imap, uid, and email when given a block of arity 3" do expect(MockIMAP).to be_disconnected messages = [] uids = [] Mail.all do |message, imap, uid| expect(MockIMAP).to be === imap messages << message uids << uid end expect(messages.map { |m| m.raw_source }.sort).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }.sort expect(uids.sort).to eq MockIMAP.examples.map { |m| m.number }.sort expect(MockIMAP).to be_disconnected end it "should get all emails and yield the imap, uid, flag, and email when given a block of arity 4" do expect(MockIMAP).to be_disconnected messages = [] uids = [] flags = [] Mail.all do |message, imap, uid, flag| expect(MockIMAP).to be === imap messages << message uids << uid flags << flag end expect(messages.map { |m| m.raw_source }.sort).to eq MockIMAP.examples.map { |m| m.attr['RFC822']}.sort expect(uids.sort).to eq MockIMAP.examples.map { |m| m.number }.sort expect(flags.sort).to eq MockIMAP.examples.map { |m| m.attr['FLAGS'] }.sort expect(MockIMAP).to be_disconnected end end describe "find and options" do it "should work with a frozen hash argument" do messages = Mail.find({:count => :all, :what => :last, :order => :asc}.freeze) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] } end it "should handle the :count option" do messages = Mail.find(:count => :all, :what => :last, :order => :asc) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] } message = Mail.find(:count => 1, :what => :last) expect(message.raw_source).to eq MockIMAP.examples.last.attr['RFC822'] messages = Mail.find(:count => 2, :what => :last, :order => :asc) expect(messages[0..1].map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }[-2..-1] end it "should handle the :what option" do messages = Mail.find(:count => :all, :what => :last) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] } messages = Mail.find(:count => 2, :what => :first, :order => :asc) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }[0..1] end it "should handle the :order option" do messages = Mail.find(:order => :desc, :count => 5, :what => :last) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }[-5..-1].reverse messages = Mail.find(:order => :asc, :count => 5, :what => :last) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }[-5..-1] end it "should handle the :mailbox option" do Mail.find(:mailbox => 'SOME-RANDOM-MAILBOX') expect(MockIMAP.mailbox).to eq 'SOME-RANDOM-MAILBOX' end it "should handle the :uid option" do messages = Mail.find(:uid => 1) expect(messages[0].raw_source).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] }[1] end it "should find the last 10 messages by default" do messages = Mail.find expect(messages.size).to eq 10 end it "should search the mailbox 'INBOX' by default" do Mail.find expect(MockIMAP.mailbox).to eq 'INBOX' end it "should handle the delete_after_find_option" do Mail.find(:delete_after_find => false) expect(MockIMAP.examples.size).to eq 20 Mail.find(:delete_after_find => true) expect(MockIMAP.examples.size).to eq 10 Mail.find(:delete_after_find => true) { |message| } expect(MockIMAP.examples.size).to eq 10 end it "should handle the find_and_delete method" do Mail.find_and_delete(:count => 15) expect(MockIMAP.examples.size).to eq 5 end it "should pass :search_charset to IMAP uid_search" do messages = Mail.find(:search_charset => 'UTF-8') expect(messages.size).to eq(1) message = messages.first expect(message.raw_source).to eq MockIMAP.examples[0].attr['RFC822'] end end describe "last" do it "should find the last received messages" do messages = Mail.last(:count => 5) expect(messages).to be_instance_of(Array) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822']}[-5..-1] end it "should find the last received message" do message = Mail.last expect(message.raw_source).to eq MockIMAP.examples.last.attr['RFC822'] end end describe "first" do it "should find the first received messages" do messages = Mail.first(:count => 5) expect(messages).to be_instance_of(Array) expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822']}[0..4] end it "should find the first received message" do message = Mail.first expect(message.raw_source).to eq MockIMAP.examples.first.attr['RFC822'] end end describe "all" do it "should find all messages" do messages = Mail.all expect(messages.size).to eq MockIMAP.examples.size expect(messages.map { |m| m.raw_source }).to eq MockIMAP.examples.map { |m| m.attr['RFC822'] } end end describe "delete_all" do it "should delete all messages" do Mail.all expect(Net::IMAP).to receive(:encode_utf7).once Mail.delete_all expect(MockIMAP.readonly?).to be_falsey expect(MockIMAP.examples.size).to eq 0 end end describe "connection" do it "should raise an Error if no block is given" do expect { Mail.connection { |m| raise ArgumentError.new } }.to raise_error(ArgumentError) end it "should yield the connection object to the given block" do Mail.connection do |connection| expect(connection).to be_an_instance_of(MockIMAP) end end end describe "handling of options" do it "should set default options" do retrievable = Mail::IMAP.new({}) options = retrievable.send(:validate_options, {}) expect(Mail::Utilities.blank?(options[:count])).not_to be_truthy expect(options[:count]).to eq 10 expect(Mail::Utilities.blank?(options[:order])).not_to be_truthy expect(options[:order]).to eq :asc expect(Mail::Utilities.blank?(options[:what])).not_to be_truthy expect(options[:what]).to eq :first expect(Mail::Utilities.blank?(options[:mailbox])).not_to be_truthy expect(options[:mailbox]).to eq 'INBOX' end it "should not replace given configuration" do retrievable = Mail::IMAP.new({}) options = retrievable.send(:validate_options, { :mailbox => 'some/mail/box', :count => 2, :order => :asc, :what => :first }) expect(Mail::Utilities.blank?(options[:count])).not_to be_truthy expect(options[:count]).to eq 2 expect(Mail::Utilities.blank?(options[:order])).not_to be_truthy expect(options[:order]).to eq :asc expect(Mail::Utilities.blank?(options[:what])).not_to be_truthy expect(options[:what]).to eq :first expect(Mail::Utilities.blank?(options[:mailbox])).not_to be_truthy expect(options[:mailbox]).to eq 'some/mail/box' end it "should ensure utf7 conversion for mailbox names" do retrievable = Mail::IMAP.new({}) expect(Net::IMAP).to receive(:encode_utf7) { 'UTF7_STRING' } options = retrievable.send(:validate_options, { :mailbox => 'UTF8_STRING' }) expect(options[:mailbox]).to eq 'UTF7_STRING' end end describe "error handling" do it "should finish the IMAP connection if an exception is raised" do expect(MockIMAP).to be_disconnected expect { Mail.all { |m| raise ArgumentError.new } }.to raise_error(ArgumentError) expect(MockIMAP).to be_disconnected end end describe "STARTTLS" do before do @imap = MockIMAP.new allow(MockIMAP).to receive(:new).and_return(@imap) end it "calls starttls to upgrade" do Mail.defaults do retriever_method :imap, :enable_starttls => true end expect(@imap).to receive(:starttls) Mail.find end it "conflicts with enable_ssl" do Mail.defaults do retriever_method :imap, :enable_starttls => true, :enable_ssl => true end expect { Mail.find }.to raise_error(ArgumentError) end end describe "authentication mechanism" do before(:each) do @imap = MockIMAP.new allow(MockIMAP).to receive(:new).and_return(@imap) end it "should be login by default" do expect(@imap).not_to receive(:authenticate) expect(@imap).to receive(:login).with('foo', 'secret') Mail.defaults do retriever_method :imap, {:user_name => 'foo', :password => 'secret'} end Mail.find end it "should be changeable" do expect(@imap).to receive(:authenticate).with('CRAM-MD5', 'foo', 'secret') expect(@imap).not_to receive(:login) Mail.defaults do retriever_method :imap, {:authentication => 'CRAM-MD5', :user_name => 'foo', :password => 'secret'} end Mail.find end end end mail-2.8.1/spec/mail/network/retriever_methods/pop3_spec.rb000066400000000000000000000166621436372131700240050ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "POP3 Retriever" do before(:each) do # Reset all defaults back to original state Mail.defaults do retriever_method :pop3, { :address => "localhost", :port => 995, :user_name => nil, :password => nil, :enable_ssl => true } end end describe "find with and without block" do it "should find all emails with a given block" do expect(MockPOP3).not_to be_started messages = [] Mail.all do |message| messages << message end expect(messages.map { |m| m.raw_source }.sort).to eq MockPOP3.popmails.map { |p| p.pop }.sort expect(MockPOP3).not_to be_started end it "should get all emails without a given block" do expect(MockPOP3).not_to be_started messages = Mail.all expect(messages.map { |m| m.raw_source }.sort).to eq MockPOP3.popmails.map { |p| p.pop }.sort expect(MockPOP3).not_to be_started end end describe "find and options" do it "should work with a frozen hash argument" do messages = Mail.find({:count => :all, :what => :last, :order => :asc}.freeze) expect(messages.map { |m| m.raw_source }.sort).to eq MockPOP3.popmails.map { |p| p.pop } end it "should handle the :count option" do messages = Mail.find(:count => :all, :what => :last, :order => :asc) expect(messages.map { |m| m.raw_source }.sort).to eq MockPOP3.popmails.map { |p| p.pop } message = Mail.find(:count => 1, :what => :last) expect(message.raw_source).to eq MockPOP3.popmails.map { |p| p.pop }.last messages = Mail.find(:count => 2, :what => :last, :order => :asc) expect(messages[0..1].collect {|m| m.raw_source}).to eq MockPOP3.popmails.map { |p| p.pop }[-2..-1] end it "should handle the :what option" do messages = Mail.find(:count => :all, :what => :last) expect(messages.map { |m| m.raw_source }.sort).to eq MockPOP3.popmails.map { |p| p.pop } messages = Mail.find(:count => 2, :what => :first, :order => :asc) expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop }[0..1] end it "should handle the :order option" do messages = Mail.find(:order => :desc, :count => 5, :what => :last) expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop }[-5..-1].reverse messages = Mail.find(:order => :asc, :count => 5, :what => :last) expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop }[-5..-1] end it "should find the last 10 messages by default" do messages = Mail.find expect(messages.size).to eq 10 end it "should handle the delete_after_find option" do Mail.find(:delete_after_find => false) MockPOP3.popmails.each { |message| expect(message).not_to be_deleted } Mail.find(:delete_after_find => true) MockPOP3.popmails.first(10).each { |message| expect(message).to be_deleted } MockPOP3.popmails.last(10).each { |message| expect(message).not_to be_deleted } Mail.find(:delete_after_find => true) { |message| } MockPOP3.popmails.first(10).each { |message| expect(message).to be_deleted } MockPOP3.popmails.last(10).each { |message| expect(message).not_to be_deleted } end it "should handle the find_and_delete method" do Mail.find_and_delete(:count => 15) MockPOP3.popmails.first(15).each { |message| expect(message).to be_deleted } MockPOP3.popmails.last(5).each { |message| expect(message).not_to be_deleted } end end describe "last" do it "should find the last received messages" do messages = Mail.last(:count => 5) expect(messages).to be_instance_of(Array) expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop }[-5..-1] end it "should find the last received message" do message = Mail.last expect(message).to be_instance_of(Mail::Message) expect(message.raw_source).to eq MockPOP3.popmails.last.pop end end describe "first" do it "should find the first received messages" do messages = Mail.first(:count => 5) expect(messages).to be_instance_of(Array) expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop }[0..4] end it "should find the first received message" do message = Mail.first expect(message).to be_instance_of(Mail::Message) expect(message.raw_source).to eq MockPOP3.popmails.first.pop end end describe "all" do it "should find all messages" do messages = Mail.all expect(messages.size).to eq MockPOP3.popmails.size expect(messages.map { |m| m.raw_source }).to eq MockPOP3.popmails.map { |p| p.pop } end end describe "delete_all" do it "should delete all mesages" do Mail.all Mail.delete_all expect(MockPOP3.popmails.size).to eq 0 end end describe "connection" do it "should raise an Error if no block is given" do expect { Mail.connection { |m| raise ArgumentError.new } }.to raise_error(ArgumentError) end it "should yield the connection object to the given block" do Mail.connection do |connection| expect(connection).to be_an_instance_of(MockPOP3) end end end describe "handling of options" do it "should set default options" do retrievable = Mail::POP3.new({}) options = retrievable.send(:validate_options, {}) expect(Mail::Utilities.blank?(options[:count])).not_to be_truthy expect(options[:count]).to eq 10 expect(Mail::Utilities.blank?(options[:order])).not_to be_truthy expect(options[:order]).to eq :asc expect(Mail::Utilities.blank?(options[:what])).not_to be_truthy expect(options[:what]).to eq :first end it "should not replace given configuration" do retrievable = Mail::POP3.new({}) options = retrievable.send(:validate_options, { :count => 2, :order => :asc, :what => :first }) expect(Mail::Utilities.blank?(options[:count])).not_to be_truthy expect(options[:count]).to eq 2 expect(Mail::Utilities.blank?(options[:order])).not_to be_truthy expect(options[:order]).to eq :asc expect(Mail::Utilities.blank?(options[:what])).not_to be_truthy expect(options[:what]).to eq :first end end describe "error handling" do it "should finish the POP3 connection is an exception is raised" do expect(MockPOP3).not_to be_started expect do Mail.all { |m| raise ArgumentError.new } end.to raise_error(ArgumentError) expect(MockPOP3).not_to be_started end end describe "read_timeout option" do it "should override the POP3 default read_timeout" do Mail.defaults do retriever_method :pop3, { :address => "localhost", :port => 995, :user_name => nil, :password => nil, :enable_ssl => true, :read_timeout => 200 } end Mail.retriever_method.send(:start) do |pop3| expect(pop3.read_timeout).to eq 200 end end end end mail-2.8.1/spec/mail/network/retriever_methods/test_retriever_spec.rb000066400000000000000000000063661436372131700261720ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe "Test Retriever" do before(:each) do Mail.defaults do retriever_method :test end end it "should have no emails initially" do expect(Mail.all).to be_empty end describe "all" do before do @emails = populate(15) end it "should return all emails without a block" do expect(Mail.all).to eq @emails end it "should return all emails with a block" do messages = [] Mail.all { |message| messages << message } expect(messages).to eq @emails end end describe "find" do before do @emails = populate(15) end it "should work with frozen hash arguments" do expect(Mail.find({:count => 1}.freeze)).to eq @emails.first expect(Mail.first({}.freeze)).to eq @emails.first expect(Mail.last({}.freeze)).to eq @emails.last expect(Mail.all({}.freeze)).to eq @emails expect(Mail.find_and_delete({}.freeze)).to eq @emails end it "should handle the :count option" do expect(Mail.find(:count => :all)).to eq @emails expect(Mail.find(:count => 1)).to eq @emails.first expect(Mail.find(:count => 5)).to eq @emails[0, 5] end it "should handle the :order option" do expect(Mail.find(:order => :asc)).to eq @emails expect(Mail.find(:order => :desc)).to eq @emails.reverse end it "should handle the :what option" do expect(Mail.find(:what => :first)).to eq @emails expect(Mail.find(:what => :first, :count => 5)).to eq @emails[0, 5] expect(Mail.find(:what => :last)).to eq @emails expect(Mail.find(:what => :last, :count => 5)).to eq @emails[10, 5] end it "should handle the both of :what and :order option with :count => 1" do expect(Mail.find(:count => 1, :what => :last, :order => :asc)).to eq @emails.last expect(Mail.find(:count => 1, :what => :first, :order => :desc)).to eq @emails.first end it "should handle the :delete_after_find option" do expect(Mail.find(:delete_after_find => false)).to eq @emails expect(Mail.find(:delete_after_find => false)).to eq @emails expect(Mail.find(:delete_after_find => true)).to eq @emails expect(Mail.find(:delete_after_find => false)).to be_empty end it "should handle the both of :delete_after_find and :count option" do expect do expect(Mail.find(:count => 5, :delete_after_find => true).size).to eq(5) end.to change { Mail.all.size }.by(-5) expect do expect(Mail.find(:count => 5, :delete_after_find => true).size).to eq(5) end.to change { Mail.all.size }.by(-5) end it "should handle the :delete_after_find option with messages marked not for delete" do i = 0 messages = [] Mail.find(:delete_after_find => true) do |message| if i.even? message.mark_for_delete = false messages << message end i += 1 end expect(Mail.all).to eq messages end end private def populate(count) (1..count).map do Mail.new do to 'mikel@me.com' from 'you@you.com' subject 'testing' body 'hello' end end.tap do |emails| Mail::TestRetriever.emails = emails.dup end end end mail-2.8.1/spec/mail/network_spec.rb000066400000000000000000000335161436372131700173670ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' class MyDelivery; def initialize(settings); end; end class MyRetriever; def initialize(settings); end; end describe "Mail" do before(:each) do # Reset all defaults back to original state Mail.defaults do delivery_method :smtp, { :address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true } retriever_method :pop3, { :address => "localhost", :port => 110, :user_name => nil, :password => nil, :enable_ssl => true } end end describe "default delivery and retriever methods" do it "should set the delivery method" do Mail.defaults do delivery_method :smtp end expect(Mail.delivery_method.class).to eq Mail::SMTP end it "should default to settings for smtp" do expect(Mail.delivery_method.class).to eq Mail::SMTP expect(Mail.delivery_method.settings).to eql({:address => "localhost", :port => 25, :domain => 'localhost.localdomain', :user_name => nil, :password => nil, :authentication => nil, :enable_starttls_auto => true, :enable_starttls => nil, :openssl_verify_mode => nil, :ssl => nil, :tls => nil, :open_timeout => 5, :read_timeout => 5 }) end it "should set the retriever method" do Mail.defaults do retriever_method :pop3 end expect(Mail.retriever_method.class).to eq Mail::POP3 end it "should default to settings for pop3" do expect(Mail.retriever_method.class).to eq Mail::POP3 expect(Mail.retriever_method.settings).to eql({:address => "localhost", :port => 110, :user_name => nil, :password => nil, :authentication => nil, :enable_ssl => true, :read_timeout => nil }) end it "should allow us to overwrite anything we need on SMTP" do Mail.defaults do delivery_method :smtp, :port => 999 end expect(Mail.delivery_method.settings[:address]).to eq 'localhost' expect(Mail.delivery_method.settings[:port]).to eq 999 end it "should allow us to overwrite anything we need on POP3" do Mail.defaults do retriever_method :pop3, :address => 'foo.bar.com' end expect(Mail.retriever_method.settings[:address]).to eq 'foo.bar.com' expect(Mail.retriever_method.settings[:port]).to eq 110 end it "should allow you to pass in your own delivery method" do Mail.defaults do delivery_method MyDelivery end expect(Mail.delivery_method.class).to eq MyDelivery end it "should ask the custom delivery agent for its settings" do mock_my_delivery = double(MyDelivery) expect(mock_my_delivery).to receive(:settings).and_return({:these_are => :settings}) expect(MyDelivery).to receive(:new).and_return(mock_my_delivery) Mail.defaults do delivery_method MyDelivery end expect(Mail.delivery_method.settings).to eql({:these_are => :settings}) end it "should allow you to pass in your own retriever method" do Mail.defaults do retriever_method MyRetriever end expect(Mail.retriever_method.class).to eq MyRetriever end it "should ask the custom retriever agent for its settings" do mock_my_retriever = double(MyRetriever) expect(mock_my_retriever).to receive(:settings).and_return({:these_are => :settings}) expect(MyRetriever).to receive(:new).and_return(mock_my_retriever) Mail.defaults do retriever_method MyRetriever end expect(Mail.retriever_method.settings).to eql({:these_are => :settings}) end end describe "instance delivery methods" do it "should copy the defaults defined by Mail.defaults" do mail = Mail.new expect(mail.delivery_method.class).to eq Mail::SMTP end it "should be able to change the delivery_method" do mail = Mail.new mail.delivery_method :file expect(mail.delivery_method.class).to eq Mail::FileDelivery end it "should be able to change the delivery_method and pass in settings" do mail = Mail.new tmpdir = File.expand_path('../../../tmp/mail', __FILE__) mail.delivery_method :file, :location => tmpdir expect(mail.delivery_method.class).to eq Mail::FileDelivery expect(mail.delivery_method.settings).to eql({:location => tmpdir, :extension => ''}) end it "should not change the default when it changes the delivery_method" do mail1 = Mail.new mail2 = Mail.new mail1.delivery_method :file expect(Mail.delivery_method.class).to eq Mail::SMTP expect(mail1.delivery_method.class).to eq Mail::FileDelivery expect(mail2.delivery_method.class).to eq Mail::SMTP end it "should not change the default settings when it changes the delivery_method settings" do mail1 = Mail.new mail2 = Mail.new mail1.delivery_method :smtp, :address => 'my.own.address' expect(Mail.delivery_method.settings[:address]).to eq 'localhost' expect(mail1.delivery_method.settings[:address]).to eq 'my.own.address' expect(mail2.delivery_method.settings[:address]).to eq 'localhost' end end describe "retrieving emails via POP3" do it "should retrieve all emails via POP3" do messages = Mail.all expect(messages).not_to be_empty for message in messages expect(message).to be_instance_of(Mail::Message) end end end describe "sending emails via SMTP" do before(:each) do # Set the delivery method to test as the default MockSMTP.reset end it "should deliver a mail message" do message = Mail.deliver do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' # add_file 'New Header Image', '/somefile.png' end expect(MockSMTP.deliveries[0][0]).to eq message.encoded expect(MockSMTP.deliveries[0][1]).to eq "mikel@test.lindsaar.net" expect(MockSMTP.deliveries[0][2]).to eq ["ada@test.lindsaar.net"] end it "should deliver itself" do message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' # add_file 'New Header Image', '/somefile.png' end message.deliver! expect(MockSMTP.deliveries[0][0]).to eq message.encoded expect(MockSMTP.deliveries[0][1]).to eq "mikel@test.lindsaar.net" expect(MockSMTP.deliveries[0][2]).to eq ["ada@test.lindsaar.net"] end end describe "deliveries" do class MyDeliveryMethod attr_accessor :settings def initialize(values = {}); end def deliver!(message); true; end end class MyObserver def self.delivered_email(message); end end class MyDeliveryHandler def deliver_mail(mail) postman = MyDeliveryMethod.new postman.deliver!(mail) end end class MyYieldingDeliveryHandler def deliver_mail(mail) yield end end before(:each) do @message = Mail.new do from 'mikel@test.lindsaar.net' to 'ada@test.lindsaar.net' subject 'Re: No way!' body 'Yeah sure' end @message.delivery_method :test end describe "adding to Mail.deliveries" do it "should add itself to the deliveries collection on mail on delivery" do expect { @message.deliver }.to change(Mail::TestMailer.deliveries, :size).by(1) end end describe "perform_deliveries" do it "should call deliver! on the delivery method by default" do delivery_agent = MyDeliveryMethod.new expect(@message).to receive(:delivery_method).and_return(delivery_agent) expect(delivery_agent).to receive(:deliver!).with(@message) @message.deliver end it "should not call deliver if perform deliveries is set to false" do @message.perform_deliveries = false delivery_agent = MyDeliveryMethod.new expect(@message).not_to receive(:delivery_method) expect(delivery_agent).not_to receive(:deliver!) @message.deliver end it "should add to the deliveries array if perform_deliveries is true" do @message.perform_deliveries = true expect { @message.deliver }.to change(Mail::TestMailer.deliveries, :size).by(1) end it "should not add to the deliveries array if perform_deliveries is false" do @message.perform_deliveries = false expect { @message.deliver }.not_to change(Mail::TestMailer.deliveries, :size) end end describe "observers" do it "should tell its observers that it was told to deliver an email" do Mail.register_observer(MyObserver) expect(MyObserver).to receive(:delivered_email).with(@message).once @message.deliver end it "should tell its observers that it was told to deliver an email even if perform_deliveries is false" do Mail.register_observer(MyObserver) @message.perform_deliveries = false expect(MyObserver).to receive(:delivered_email).with(@message).once @message.deliver end it "should tell its observers that it was told to deliver an email even if it is using a delivery_handler" do Mail.register_observer(MyObserver) @message.delivery_handler = MyYieldingDeliveryHandler.new @message.perform_deliveries = false expect(MyObserver).to receive(:delivered_email).with(@message).once @message.deliver end end describe "raise_delivery_errors" do it "should pass on delivery errors if raised" do delivery_agent = MyDeliveryMethod.new allow(@message).to receive(:delivery_method).and_return(delivery_agent) allow(delivery_agent).to receive(:deliver!).and_raise(StandardError) expect { @message.deliver }.to raise_error(StandardError) end it "should not pass on delivery errors if raised raise_delivery_errors is set to false" do delivery_agent = MyDeliveryMethod.new allow(@message).to receive(:delivery_method).and_return(delivery_agent) @message.raise_delivery_errors = false allow(delivery_agent).to receive(:deliver!).and_raise(StandardError) expect { @message.deliver }.not_to raise_error end it "should pass through Exceptions even when raise_delivery_errors is set to false" do delivery_agent = MyDeliveryMethod.new allow(@message).to receive(:delivery_method).and_return(delivery_agent) @message.raise_delivery_errors = false allow(delivery_agent).to receive(:deliver!).and_raise(Exception) expect { @message.deliver }.to raise_error(Exception) end end describe "delivery_handler" do it "should allow you to hand off performing the actual delivery to another object" do delivery_handler = MyYieldingDeliveryHandler.new expect(delivery_handler).to receive(:deliver_mail).with(@message).exactly(:once) @message.delivery_handler = delivery_handler @message.deliver end it "mail should be told to :deliver once and then :deliver! once by the delivery handler" do @message.delivery_handler = MyYieldingDeliveryHandler.new expect(@message).to receive(:do_delivery).exactly(:once) @message.deliver end it "mail only call its delivery_method once" do @message.delivery_handler = MyYieldingDeliveryHandler.new expect(@message).to receive(:delivery_method).exactly(:once).and_return(Mail::TestMailer.new({})) @message.deliver end it "mail should not catch any exceptions when using a delivery_handler" do @message.delivery_handler = MyYieldingDeliveryHandler.new expect(@message).to receive(:delivery_method).and_raise(Exception) expect { @message.deliver }.to raise_error(Exception) end it "mail should not modify the Mail.deliveries object if using a delivery_handler that does not append to deliveries" do @message.delivery_handler = MyDeliveryHandler.new expect { @message.deliver }.not_to change(Mail::TestMailer, :deliveries) end it "should be able to just yield and let mail do its thing" do @message.delivery_handler = MyYieldingDeliveryHandler.new expect(@message).to receive(:do_delivery).exactly(:once) @message.deliver end end end end mail-2.8.1/spec/mail/parsers/000077500000000000000000000000001436372131700160065ustar00rootroot00000000000000mail-2.8.1/spec/mail/parsers/address_lists_parser_spec.rb000066400000000000000000000037501436372131700235710ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "AddressListsParser" do it "should parse an address" do text = 'Mikel Lindsaar , Friends: test2@lindsaar.net, Ada ;' a = Mail::Parsers::AddressListsParser expect(a.parse(text)).not_to be_nil end it "should parse an address list separated by semicolons" do text = 'Mikel Lindsaar ; Friends: test2@lindsaar.net; Ada ;' a = Mail::Parsers::AddressListsParser expect(a.parse(text)).not_to be_nil end context "parsing an address with a space at the end" do it "only finds a single address" do text = 'Mikel Lindsaar ' a = Mail::Parsers::AddressListsParser expect(a.parse(text).addresses.size).to eq 1 end end context "parsing an address which begins with a comment" do it "extracts local string correctly" do text = '(xxxx xxxxxx xxxx)ababab@example.com' a = Mail::Parsers::AddressListsParser expect(a.parse(text).addresses.size).to eq 1 expect(a.parse(text).addresses.first.local).to eq 'ababab' end end context "RFC6532 UTF-8 headers" do it "extracts UTF-8 local string" do text = '"🌈" (😁) <💌@👉.com>, 🤠:test@example.com;' a = Mail::Parsers::AddressListsParser result = a.parse(text) expect(result.addresses.size).to eq 2 address = result.addresses[0] expect(address.display_name).to eq '🌈' expect(address.local).to eq '💌' expect(address.domain).to eq '👉.com' address = result.addresses[1] expect(address.group).to eq '🤠' expect(address.local).to eq 'test' expect(address.domain).to eq 'example.com' end it "should parse an address" do text = '"💌" <💌@💌.com>, 🤠: test2@lindsaar.net, Ada ;' a = Mail::Parsers::AddressListsParser expect(a.parse(text)).not_to be_nil end end end mail-2.8.1/spec/mail/parsers/content_transfer_encoding_parser_spec.rb000066400000000000000000000036601436372131700261520ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "ContentTransferEncodingParser" do it "should work" do text = "quoted-printable" a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'quoted-printable' end describe "trailing semi colons" do it "should parse" do text = "quoted-printable;" a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'quoted-printable' end it "should parse with pre white space" do text = 'quoted-printable ;' a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'quoted-printable' end it "should parse with trailing white space" do text = 'quoted-printable; ' a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'quoted-printable' end it "should parse with pre and trailing white space" do text = 'quoted-printable ; ' a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'quoted-printable' end end describe "x-token values" do it "should work" do text = 'x-my-token' a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(text).error).to be_nil expect(a.parse(text).encoding).to eq 'x-my-token' end end describe "wild content-transfer-encoding" do %w(7bits 8bits 7-bit 8-bit).each do |mechanism| it "should parse #{mechanism} variant" do a = Mail::Parsers::ContentTransferEncodingParser expect(a.parse(mechanism).error).to be_nil expect(a.parse(mechanism).encoding).to eq mechanism end end end end mail-2.8.1/spec/mail/part_spec.rb000066400000000000000000000153011436372131700166340ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe Mail::Part do it "should not add a default Content-ID" do part = Mail::Part.new part.to_s expect(part.content_id).to be_nil end it "should not add a default Content-ID to non-inline attachments" do part = Mail::Part.new(:content_disposition => 'attachment') part.to_s expect(part.content_id).to be_nil end it "should add a default Content-ID to inline attachments" do part = Mail::Part.new(:content_disposition => 'inline') part.to_s expect(part.content_id).not_to be_nil end it "should not add a Date, MIME-Version, or Message-ID" do part = Mail::Part.new part.to_s expect(part.date).to be_nil expect(part.mime_version).to be_nil expect(part.message_id).to be_nil end it "should preserve any content id that you put into it" do part = Mail::Part.new do content_id "" body "This is Text" end expect(part.content_id).to eq "" end it "should return an inline content_id" do part = Mail::Part.new do content_id "" body "This is Text" end expect(part.cid).to eq "thisis@acontentid" end it "should URL escape its inline content_id" do part = Mail::Part.new do content_id "" body "This is Text" end expect(part.cid).to eq "thi%25%25sis@acontentid" end it "should add a content_id if there is none and is asked for an inline_content_id" do part = Mail::Part.new expect(part.cid).not_to be_nil end it "should respond correctly to inline?" do part = Mail::Part.new(:content_disposition => 'attachment') expect(part).not_to be_inline part = Mail::Part.new(:content_disposition => 'inline') expect(part).to be_inline end it "handles un-parsable content_disposition headers" do part = Mail::Part.new field = Mail::Field.new('content-disposition') field.field = Mail::UnstructuredField.new('content-disposition', 'failed to parse') part.header.fields << field expect(part).not_to be_inline end describe "parts that have a missing header" do it "should not try to init a header if there is none" do expect { Mail::Part.new(Mail::Utilities.to_crlf(< (reason: 553 5.3.0 ... Unknown E-Mail Address) ----- Transcript of session follows ----- ... while talking to mail.zzzzzz.com.: >>> DATA <<< 553 5.3.0 ... Unknown E-Mail Address 550 5.1.1 ... User unknown <<< 503 5.0.0 Need RCPT (recipient) -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. PARTEND }.to_not output.to_stderr end end describe "delivery status reports" do before do @delivery_report = Mail::Part.new(Mail::Utilities.to_crlf(<... Unknown E-Mail Address Last-Attempt-Date: Mon, 24 Dec 2007 10:03:53 +1100 ENDPART end it "should know if it is a delivery-status report" do expect(@delivery_report).to be_delivery_status_report_part end it "should create a delivery_status_data header object" do expect(@delivery_report.delivery_status_data).not_to be_nil end it "should be bounced" do expect(@delivery_report).to be_bounced end it "should say action 'delayed'" do expect(@delivery_report.action).to eq 'failed' end it "should give a final recipient" do expect(@delivery_report.final_recipient).to eq 'RFC822; edwin@zzzzzzz.com' end it "should give an error code" do expect(@delivery_report.error_status).to eq '5.3.0' end it "should give a diagostic code" do expect(@delivery_report.diagnostic_code).to eq 'SMTP; 553 5.3.0 ... Unknown E-Mail Address' end it "should give a remote-mta" do expect(@delivery_report.remote_mta).to eq 'DNS; mail.zzzzzz.com' end it "should be retryable" do expect(@delivery_report).not_to be_retryable end context "on a part without a certain field" do before(:each) do @delivery_report = Mail::Part.new(Mail::Utilities.to_crlf(<This is HTML" end parsed_mail = Mail.new(mail.to_s) expect(parsed_mail.mime_type).to eq 'multipart/alternative' expect(parsed_mail.boundary).to eq mail.boundary expect(parsed_mail.parts.length).to eq 2 expect(parsed_mail.parts[0].body.to_s).to eq "This is Text" expect(parsed_mail.parts[1].body.to_s).to eq "This is HTML" end it "should round trip an email" do initial = Mail.new do to "mikel@test.lindsaar.net" subject "testing round tripping" body "Really testing round tripping." from "system@test.lindsaar.net" cc "nobody@test.lindsaar.net" bcc "bob@test.lindsaar.net" date Time.local(2009, 11, 6) add_file :filename => "foo.txt", :content => "I have \ntwo lines\n\n" end expect(Mail.new(initial.encoded).encoded).to eq initial.encoded end it "preserves text attachment newlines" do body = "I have \r\ntwo lines\n\r" initial = Mail.new initial.add_file :filename => "foo.txt", :content => body expect(Mail.new(initial.encoded).attachments.first.decoded).to eq ::Mail::Utilities.binary_unsafe_to_lf(body) end end mail-2.8.1/spec/mail/utilities_spec.rb000066400000000000000000000411001436372131700176750ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe "Utilities Module" do include Mail::Utilities describe "token safe" do describe "checking" do it "should return true if a string is token safe" do expect(token_safe?('.abc')).to be_truthy end it "should return false if a string is token safe" do expect(token_safe?('?=abc')).to be_falsey end it "should work with mb_chars" do expect(token_safe?(Mail::Multibyte.mb_chars('.abc'))).to be_truthy expect(token_safe?(Mail::Multibyte.mb_chars('?=abc'))).to be_falsey end end describe "quoting" do it "should return true if a string is token safe" do expect(quote_token('.abc')).to eq '.abc' end it "should return false if a string is token safe" do expect(quote_token('?=abc')).to eq '"?=abc"' end it "should work with mb_chars" do expect(quote_token(Mail::Multibyte.mb_chars('.abc'))).to eq '.abc' expect(quote_token(Mail::Multibyte.mb_chars('?=abc'))).to eq '"?=abc"' end end end describe "atom safe" do describe "checking" do it "should return true if a string is token safe" do expect(atom_safe?('?=abc')).to be_truthy end it "should return false if a string is token safe" do expect(atom_safe?('.abc')).to be_falsey end it "should work with mb_chars" do expect(atom_safe?(Mail::Multibyte.mb_chars('?=abc'))).to be_truthy expect(atom_safe?(Mail::Multibyte.mb_chars('.abc'))).to be_falsey end end describe "quoting" do it "should return true if a string is token safe" do expect(quote_atom('?=abc')).to eq '?=abc' end it "should return false if a string is token safe" do expect(quote_atom('.abc')).to eq '".abc"' end it "should work with mb_chars" do expect(quote_atom(Mail::Multibyte.mb_chars('?=abc'))).to eq '?=abc' expect(quote_atom(Mail::Multibyte.mb_chars('.abc'))).to eq '".abc"' end it "should quote mb_chars white space" do expect(quote_atom(Mail::Multibyte.mb_chars('ab abc'))).to eq '"ab abc"' expect(quote_atom(Mail::Multibyte.mb_chars("a\sb\ta\r\nbc"))).to eq %{"a\sb\ta\r\nbc"} end end end describe "quoting phrases" do it "doesn't mutate original string" do input_str = "blargh".freeze expect { quote_phrase(input_str) }.not_to raise_error end describe "given a non-unsafe string" do it "should not change the encoding" do input_str = "blargh" input_str_encoding = input_str.encoding result = quote_phrase(input_str) expect(result.encoding).to eq input_str_encoding end end describe "given an unsafe string" do it "should not change the encoding" do input_str = "Bjørn" input_str_encoding = input_str.encoding result = quote_phrase(input_str) expect(result.encoding).to eq input_str_encoding end end end describe "escaping parenthesies" do it "should escape parens" do test = 'This is not (escaped)' result = 'This is not \(escaped\)' expect(escape_paren(test)).to eq result end it "should not double escape parens" do test = 'This is not \(escaped\)' result = 'This is not \(escaped\)' expect(escape_paren(test)).to eq result end it "should escape all parens" do test = 'This is not \()escaped(\)' result = 'This is not \(\)escaped\(\)' expect(escape_paren(test)).to eq result end end describe "unescaping parenthesis" do it "should work" do test = '(This is a string)' result = 'This is a string' expect(unparen(test)).to eq result end it "should work without parens" do test = 'This is a string' result = 'This is a string' expect(unparen(test)).to eq result end it "should work using Multibyte.mb_chars" do test = Mail::Multibyte.mb_chars('(This is a string)') result = 'This is a string' expect(unparen(test)).to eq result end it "should work without parens using Multibyte.mb_chars" do test = Mail::Multibyte.mb_chars('This is a string') result = 'This is a string' expect(unparen(test)).to eq result end end describe "unescaping brackets" do it "should work" do test = '' result = 'This is a string' expect(unbracket(test)).to eq result end it "should work without brackets" do test = 'This is a string' result = 'This is a string' expect(unbracket(test)).to eq result end it "should work using Multibyte.mb_chars" do test = Mail::Multibyte.mb_chars('') result = 'This is a string' expect(unbracket(test)).to eq result end it "should work without parens using Multibyte.mb_chars" do test = Mail::Multibyte.mb_chars('This is a string') result = 'This is a string' expect(unbracket(test)).to eq(result) end end describe "quoting phrases" do it "should quote a phrase if it is unsafe" do test = 'this.needs quoting' result = '"this.needs quoting"' expect(dquote(test)).to eq result end it "should properly quote a string, even if quoted but not escaped properly" do test = '"this needs "escaping"' result = '"this needs \"escaping"' expect(dquote(test)).to eq result end it "should quote correctly a phrase with an escaped quote in it" do test = 'this needs \"quoting' result = '"this needs \\\\\\"quoting"' expect(dquote(test)).to eq result end it "should quote correctly a phrase with an escaped backslash followed by an escaped quote in it" do test = 'this needs \\\"quoting' result = '"this needs \\\\\\\\\\"quoting"' expect(dquote(test)).to eq result end end describe "unquoting phrases" do it "should remove quotes from the edge" do expect(unquote('"This is quoted"')).to eq 'This is quoted' end it "should remove backslash escaping from quotes" do expect(unquote('"This is \\"quoted\\""')).to eq 'This is "quoted"' end it "should remove backslash escaping from any char" do expect(unquote('"This is \\quoted"')).to eq 'This is quoted' end it "should be able to handle unquoted strings" do expect(unquote('This is not quoted')).to eq 'This is not quoted' end it "should preserve backslashes in unquoted strings" do expect(unquote('This is not \"quoted')).to eq 'This is not \"quoted' end it "should be able to handle unquoted quotes" do expect(unquote('"This is "quoted"')).to eq 'This is "quoted' end end describe "unescaping phrases" do it "should not modify a string with no backslashes" do expect(unescape('This is a string')).to eq 'This is a string' end it "should not modify a quoted string with no backslashes" do expect(unescape('"This is a string"')).to eq '"This is a string"' end it "should remove backslash escaping from a string" do expect(unescape('This is \"a string\"')).to eq 'This is "a string"' end it "should remove backslash escaping from a quoted string" do expect(unescape('"This is \"a string\""')).to eq '"This is "a string""' end end describe "parenthesizing phrases" do it "should parenthesize a phrase" do test = 'this.needs parenthesizing' result = '(this.needs parenthesizing)' expect(paren(test)).to eq result end it "should properly parenthesize a string, and escape properly" do test = 'this needs (escaping' result = '(this needs \(escaping)' expect(paren(test)).to eq result end it "should properly parenthesize a string, and escape properly (other way)" do test = 'this needs )escaping' result = '(this needs \)escaping)' expect(paren(test)).to eq result end it "should properly parenthesize a string, even if parenthesized but not escaped properly" do test = '(this needs (escaping)' result = '(this needs \(escaping)' expect(paren(test)).to eq result end it "should properly parenthesize a string, even if parenthesized but not escaped properly (other way)" do test = '(this needs )escaping)' result = '(this needs \)escaping)' expect(paren(test)).to eq result end it "should parenthesize correctly a phrase with an escaped parentheses in it" do test = 'this needs \(parenthesizing' result = '(this needs \(parenthesizing)' expect(paren(test)).to eq result end it "should parenthesize correctly a phrase with an escaped parentheses in it (other way)" do test = 'this needs \)parenthesizing' result = '(this needs \)parenthesizing)' expect(paren(test)).to eq result end it "should parenthesize correctly a phrase with an escaped backslash followed by an escaped parentheses in it" do test = 'this needs \\\(parenthesizing' result = '(this needs \\\(parenthesizing)' expect(paren(test)).to eq result end it "should parenthesize correctly a phrase with an escaped backslash followed by an escaped parentheses in it (other way)" do test = 'this needs \\\)parenthesizing' result = '(this needs \\\)parenthesizing)' expect(paren(test)).to eq result end it "should parenthesize correctly a phrase with a set of parentheses" do test = 'this (needs) parenthesizing' result = '(this \(needs\) parenthesizing)' expect(paren(test)).to eq result end end describe "bracketizing phrases" do it "should bracketize a phrase" do test = 'this.needs bracketizing' result = '' expect(bracket(test)).to eq result end it "should properly bracketize a string, and escape properly" do test = 'this needs nil, :two => nil})).not_to be_truthy end it "should say a hash containing an empty hash is not blank" do expect(Mail::Utilities.blank?({:key => {}})).not_to be_truthy end end describe "to_lf" do it "converts single CR" do expect(Mail::Utilities.to_lf("\r")).to eq "\n" end it "converts multiple CR" do expect(Mail::Utilities.to_lf("\r\r")).to eq "\n\n" end it "converts single CRLF" do expect(Mail::Utilities.to_lf("\r\n")).to eq "\n" end it "converts multiple CRLF" do expect(Mail::Utilities.to_lf("\r\n\r\n")).to eq "\n\n" end it "leaves LF intact" do expect(Mail::Utilities.to_lf("\n\n")).to eq "\n\n" end it "converts mixed line endings" do expect(Mail::Utilities.to_lf("\r \n\r\n")).to eq "\n \n\n" end it "should handle japanese characters" do string = "\343\201\202\343\201\210\343\201\206\343\201\210\343\201\212\r\n\r\n\343\201\213\343\201\215\343\201\217\343\201\221\343\201\223\r\n\r\n\343\201\225\343\201\227\343\201\244\343\201\233\343\201\235\r\n\r\n" expect(Mail::Utilities.binary_unsafe_to_lf(string)).to eq "\343\201\202\343\201\210\343\201\206\343\201\210\343\201\212\n\n\343\201\213\343\201\215\343\201\217\343\201\221\343\201\223\n\n\343\201\225\343\201\227\343\201\244\343\201\233\343\201\235\n\n" end describe "on NilClass" do it "returns an empty string" do expect(Mail::Utilities.to_lf(nil)).to eq '' end end describe "on String subclasses" do it "returns Strings" do klass = Class.new(String) string = klass.new('') expect(Mail::Utilities.to_lf(string)).to be_an_instance_of(String) end end end describe "to_crlf" do it "converts single LF" do expect(Mail::Utilities.to_crlf("\n")).to eq "\r\n" end it "converts multiple LF" do expect(Mail::Utilities.to_crlf("\n\n")).to eq "\r\n\r\n" end it "converts single CR" do expect(Mail::Utilities.to_crlf("\r")).to eq "\r\n" end it "preserves single CRLF" do expect(Mail::Utilities.to_crlf("\r\n")).to eq "\r\n" end it "preserves multiple CRLF" do expect(Mail::Utilities.to_crlf("\r\n\r\n")).to eq "\r\n\r\n" end it "converts mixed line endings" do expect(Mail::Utilities.to_crlf("\r \n\r\n")).to eq "\r\n \r\n\r\n" end it "should handle japanese characters" do string = "\343\201\202\343\201\210\343\201\206\343\201\210\343\201\212\r\n\r\n\343\201\213\343\201\215\343\201\217\343\201\221\343\201\223\r\n\r\n\343\201\225\343\201\227\343\201\244\343\201\233\343\201\235\r\n\r\n" expect(Mail::Utilities.binary_unsafe_to_crlf(string)).to eq "\343\201\202\343\201\210\343\201\206\343\201\210\343\201\212\r\n\r\n\343\201\213\343\201\215\343\201\217\343\201\221\343\201\223\r\n\r\n\343\201\225\343\201\227\343\201\244\343\201\233\343\201\235\r\n\r\n" end describe "on NilClass" do it "returns an empty string" do expect(Mail::Utilities.to_crlf(nil)).to eq '' end end describe "on String subclasses" do it "returns Strings" do klass = Class.new(String) string = klass.new('') expect(Mail::Utilities.to_crlf(string)).to be_an_instance_of(String) end end end describe '.decode_base64' do it "handles unpadded base64 correctly" do decoded = Mail::Utilities.decode_base64("YQ") expect(decoded).to eq "a" end end end mail-2.8.1/spec/mail/yaml_spec.rb000066400000000000000000000003151436372131700166270ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require 'spec_helper' describe Mail::YAML do describe "#load" do it 'loads YAML' do expect(Mail::YAML.load('{}')).to eq({}) end end end mail-2.8.1/spec/matchers/000077500000000000000000000000001436372131700152135ustar00rootroot00000000000000mail-2.8.1/spec/matchers/break_down_to.rb000066400000000000000000000013511436372131700203550ustar00rootroot00000000000000# frozen_string_literal: true module CustomMatchers class BreakDownTo def initialize(expected) @expected = expected end def matches?(target) @target = target @failed = false @expected.each_pair do |k,v| @failed = k unless @target.send(k) == @expected[k] end !@failed end def failure_message "expected #{@failed} to be |#{@expected[@failed]}| " + "but was |#{@target.send(@failed)}|" end def failure_message_when_negated "expected #{@failed} not to be |#{@expected[@failed]}| " + "and was |#{@target.send(@failed)}|" end end # Actual matcher that is exposed. def break_down_to(expected) BreakDownTo.new(expected) end end mail-2.8.1/spec/matchers_spec.rb000066400000000000000000000223201436372131700165510ustar00rootroot00000000000000# frozen_string_literal: true require 'spec_helper' describe "have_sent_email" do include Mail::Matchers let(:include_attachments) { true } let(:test_mail) do mail = Mail.new( :from => 'phil@example.com', :to => ['bob@example.com', 'fred@example.com'], :cc => ['dad@example.com', 'mom@example.com'], :bcc => ['alice@example.com', 'sue@example.com'], :subject => 'The facts you requested', :body => 'Here are the facts you requested. One-onethousand, two-onethousand.' ) if include_attachments mail.attachments['myfile.pdf'] = { :mime_type => 'application/x-pdf', :content => 'test content' } mail.attachments['yourfile.csv'] = { :mime_type => 'application/csv', :content => '1,2,3' } end mail end let(:test_html_mail) do Mail.new do from 'phil@example.com' to ['bob@example.com', 'fred@example.com'] cc ['dad@example.com', 'mom@example.com'] bcc ['alice@example.com', 'sue@example.com'] subject 'The facts you requested' text_part do body 'Here is the text-part' end html_part do content_type 'text/html; charset=UTF-8' body 'Here is the html-part' end end end before(:all) do $old_delivery_method = Mail.delivery_method Mail.defaults do delivery_method :test end end before(:each) do Mail::TestMailer.deliveries.clear test_mail.deliver end after(:all) do # Although this breaks encapsulation, it's the easiest way to ensure # that the delivery method is _exactly_ what it was before we started # messing with it. Mail::Configuration.instance.instance_variable_set(:@delivery_method, $old_delivery_method) end context "without any modifiers" do context "when no e-mail has been sent" do before(:each) do Mail::TestMailer.deliveries.clear expect(Mail::TestMailer.deliveries).to be_empty end it { is_expected.not_to have_sent_email } end context "when e-mail has been sent" do before(:each) do expect(Mail::TestMailer.deliveries).not_to be_empty end it { is_expected.to have_sent_email } end end context "with #from" do context "and a matching sender" do it { is_expected.to have_sent_email.from('phil@example.com') } end context "and a non-matching sender" do it { is_expected.not_to have_sent_email.from('sven@example.com') } end end context "with #to" do context "and a matching recipient" do it { is_expected.to have_sent_email.to('bob@example.com') } it { is_expected.to have_sent_email.to('fred@example.com') } it { is_expected.to have_sent_email.to('bob@example.com').to('fred@example.com') } it { is_expected.to have_sent_email.to(['bob@example.com', 'fred@example.com']) } end context "and a non-matching recipient" do it { is_expected.not_to have_sent_email.to('sven@example.com') } end end context "with #cc" do context "and a matching recipient" do it { is_expected.to have_sent_email.cc('mom@example.com') } it { is_expected.to have_sent_email.cc('dad@example.com') } it { is_expected.to have_sent_email.cc('mom@example.com').cc('dad@example.com') } it { is_expected.to have_sent_email.cc(['mom@example.com', 'dad@example.com']) } end context "and a non-matching recipient" do it { is_expected.not_to have_sent_email.cc('granny@example.com') } end end context "with #bcc" do context "and a matching recipient" do it { is_expected.to have_sent_email.bcc('alice@example.com') } it { is_expected.to have_sent_email.bcc('sue@example.com') } it { is_expected.to have_sent_email.bcc('alice@example.com').bcc('sue@example.com') } it { is_expected.to have_sent_email.bcc(['alice@example.com', 'sue@example.com']) } end context "and a non-matching recipient" do it { is_expected.not_to have_sent_email.bcc('mario@example.com') } end end context "with #subject" do context "and a matching subject" do it { is_expected.to have_sent_email.with_subject('The facts you requested') } end context "and a non-matching subject" do it { is_expected.not_to have_sent_email.with_subject('facts you requested') } it { is_expected.not_to have_sent_email.with_subject('the facts you') } it { is_expected.not_to have_sent_email.with_subject('outright lies') } end end context "with #subject_matching" do context "and a matching subject" do it { is_expected.to have_sent_email.matching_subject(/(facts|fiction) you requested/) } end context "and a non-matching subject" do it { is_expected.not_to have_sent_email.matching_subject(/The \d+ facts you requested/) } end end context "with #with_body" do context "and a matching body" do it { is_expected.to have_sent_email.with_body('Here are the facts you requested. One-onethousand, two-onethousand.') } end context "and a non-matching body" do it { is_expected.not_to have_sent_email.with_body('Here are the facts you requested.') } it { is_expected.not_to have_sent_email.with_body('are the facts you requested. One-onethousand') } it { is_expected.not_to have_sent_email.with_body('Be kind to your web-footed friends, for a duck may be somebody\'s mother') } end end context 'with #with_attachments' do let(:first_attachment) { test_mail.attachments.first } let(:last_attachment) { test_mail.attachments.last } context 'and matching attachments' do context 'matching by filename' do it { is_expected.to have_sent_email.with_attachments(an_attachment_with_filename(first_attachment.filename)) } end context 'matching by mimetype' do it { is_expected.to have_sent_email.with_attachments(an_attachment_with_mime_type(first_attachment.mime_type)) } end context 'single attachment passed' do it { is_expected.to have_sent_email.with_attachments(first_attachment) } end context 'array of attachments passed' do it {is_expected.to have_sent_email.with_attachments([first_attachment, last_attachment]) } end context 'any_attachment passed' do it {is_expected.to have_sent_email.with_attachments([any_attachment]) } end context 'chaining attachment matching' do it { is_expected.to have_sent_email.with_attachments(first_attachment).with_attachments([last_attachment]) } end context 'ce matching' do it { is_expected.to have_sent_email.with_attachments(first_attachment).with_attachments([last_attachment]) } end context 'attachment order is important' do it {is_expected.to have_sent_email.with_attachments([first_attachment, last_attachment]) } it {is_expected.to_not have_sent_email.with_attachments([last_attachment, first_attachment]) } end end context 'and non-matching attachments' do it { is_expected.not_to have_sent_email.with_attachments('no_match') } it { is_expected.not_to have_sent_email.with_attachments(an_attachment_with_filename('no_match')) } end context 'and any attachments' do it { is_expected.to have_sent_email.with_any_attachments } end context 'and no attachments' do let(:include_attachments) { false } it { is_expected.to have_sent_email.with_no_attachments } end end context "with #matching_body" do context "and a matching body" do it { is_expected.to have_sent_email.matching_body(/one-?one(hundred|thousand)/i) } end context "and a non-matching body" do it { is_expected.not_to have_sent_email.matching_body(/\d+-onethousand/) } end end context "with a huge chain of modifiers" do it do is_expected.to have_sent_email. from('phil@example.com'). to('bob@example.com'). to('fred@example.com'). with_subject('The facts you requested'). with_attachments(test_mail.attachments.first). matching_subject(/facts (I|you)/). with_body('Here are the facts you requested. One-onethousand, two-onethousand.'). matching_body(/(I|you) request/). with_any_attachments end end context "with html-mail" do before(:each) do Mail::TestMailer.deliveries.clear end context "when html-mail has been sent" do before(:each) do test_html_mail.deliver end context "with #html_part" do context "and a matching html_part.body" do it { is_expected.to have_sent_email.with_html('Here is the html-part') } end context "and a non-matching html_part.body" do it { is_expected.not_to have_sent_email.with_html('Here is the body') } end end context "with #text_part" do context "and a matching text_part.body" do it { is_expected.to have_sent_email.with_text('Here is the text-part') } end context "and a non-matching text_part.body" do it { is_expected.not_to have_sent_email.with_text('Here is the subject') } end end end end end mail-2.8.1/spec/spec_helper.rb000066400000000000000000000136571436372131700162370ustar00rootroot00000000000000# encoding: utf-8 # frozen_string_literal: true require File.expand_path('../environment', __FILE__) unless defined?(MAIL_ROOT) $stderr.puts("Running Specs under Ruby Version #{RUBY_VERSION}") MAIL_ROOT = File.join(File.dirname(__FILE__), '../') end unless defined?(SPEC_ROOT) SPEC_ROOT = File.join(File.dirname(__FILE__)) end unless defined?(MAIL_SPEC_SUITE_RUNNING) # Used to force compile all the parsers on each spec suite load MAIL_SPEC_SUITE_RUNNING = true end require 'rspec' require File.join(File.dirname(__FILE__), 'matchers', 'break_down_to') require 'mail' $stderr.puts("Running Specs for Mail Version #{Mail::VERSION::STRING}") RSpec.configure do |c| c.mock_with :rspec c.include(CustomMatchers) require 'rspec-benchmark' c.include RSpec::Benchmark::Matchers end if defined?(Encoding) && Encoding.respond_to?(:default_external=) begin orig, $VERBOSE = $VERBOSE, nil Encoding.default_external = 'utf-8' ensure $VERBOSE = orig end end def fixture_path(*path) File.join SPEC_ROOT, 'fixtures', path end def read_raw_fixture(*path) File.open fixture_path(*path), 'rb', &:read end def read_fixture(*path) Mail.read fixture_path(*path) end # Produces an array or printable ascii by default. # # We can assume if a, m and z and 1, 5, 0 work, then the rest # of the letters and numbers work. def ascii(from = 33, to = 126) chars = (from..to).map(&:chr) boring = ('b'..'l').to_a + ('n'..'o').to_a + ('p'..'y').to_a + ('B'..'L').to_a + ('N'..'O').to_a + ('P'..'Y').to_a + ('1'..'4').to_a + ('6'..'8').to_a chars - boring end # https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/string/strip.rb#L22 def strip_heredoc(string) indent = string.scan(/^[ \t]*(?=\S)/).min.size string.gsub(/^[ \t]{#{indent}}/, '') end class Net::SMTP class << self alias unstubbed_new new end def self.new(*args) MockSMTP.new end end # Original mockup from ActionMailer class MockSMTP attr_accessor :open_timeout, :read_timeout def self.reset test = Net::SMTP.unstubbed_new('example.com') @@tls = test.tls? @@starttls = test.starttls? @@deliveries = [] end reset def self.deliveries @@deliveries end def self.tls @@tls end def self.starttls @@starttls end def initialize self.class.reset end def sendmail(mail, from, to) @@deliveries << [mail, from, to] 'OK' end def start(*args) if block_given? return yield(self) else return self end end def finish return true end def enable_tls(context) raise ArgumentError, "SMTPS and STARTTLS is exclusive" if @@starttls == :always @@tls = true context end def disable_tls @@tls = false end def enable_starttls(context = nil) raise ArgumentError, "SMTPS and STARTTLS is exclusive" if @@tls @@starttls = :always context end def enable_starttls_auto(context) raise ArgumentError, "SMTPS and STARTTLS is exclusive" if @@tls @@starttls = :auto context end def disable_starttls @@starttls = false end end class MockPopMail def initialize(rfc2822, number) @rfc2822 = rfc2822 @number = number @deleted = false end def pop @rfc2822 end def number @number end def to_s "#{number}: #{pop}" end def delete @deleted = true end def deleted? @deleted end end class MockPOP3 @@start = false attr_accessor :read_timeout def initialize @@popmails = [] 20.times do |i| # "test00", "test01", "test02", ..., "test19" @@popmails << MockPopMail.new("test#{i.to_s.rjust(2, '0')}", i) end end def self.popmails @@popmails.clone end def each_mail(*args) @@popmails.each do |popmail| yield popmail end end def mails(*args) @@popmails.clone end def start(*args) @@start = true block_given? ? yield(self) : self end def enable_ssl(*args) true end def started? @@start == true end def self.started? @@start == true end def reset end def finish @@start = false end def delete_all @@popmails = [] end end require 'net/pop' class Net::POP3 def self.new(*args) MockPOP3.new end end class MockIMAPFetchData attr_reader :attr, :number def initialize(rfc822, number, flag) @attr = { 'RFC822' => rfc822, 'FLAGS' => flag } @number = number end end class MockIMAP @@connection = false @@mailbox = nil @@readonly = false @@marked_for_deletion = [] @@default_examples = { :default => (0..19).map do |i| MockIMAPFetchData.new("test#{i.to_s.rjust(2, '0')}", i, "DummyFlag#{i}") end } @@default_examples['UTF-8'] = @@default_examples[:default].slice(0, 1) def self.examples(charset = nil) @@examples.fetch(charset || :default) end def initialize @@examples = { :default => @@default_examples[:default].dup, 'UTF-8' => @@default_examples['UTF-8'].dup } end def login(user, password) @@connection = true end def disconnect @@connection = false end def select(mailbox) @@mailbox = mailbox @@readonly = false end def examine(mailbox) select(mailbox) @@readonly = true end def uid_search(keys, charset = nil) [*(0..self.class.examples(charset).size - 1)] end def uid_fetch(set, attr) [self.class.examples[set]] end def uid_store(set, attr, flags) if attr == "+FLAGS" && flags.include?(Net::IMAP::DELETED) @@marked_for_deletion << set end end def expunge @@marked_for_deletion.reverse.each do |i| # start with highest index first self.class.examples.delete_at(i) end @@marked_for_deletion = [] end def self.mailbox; @@mailbox end # test only def self.readonly?; @@readonly end # test only def self.disconnected?; @@connection == false end def disconnected?; @@connection == false end end require 'net/imap' class Net::IMAP def self.new(*args) MockIMAP.new end end mail-2.8.1/tasks/000077500000000000000000000000001436372131700136005ustar00rootroot00000000000000mail-2.8.1/tasks/corpus.rake000066400000000000000000000051171436372131700157630ustar00rootroot00000000000000require 'benchmark' namespace :corpus do task :load_mail do require File.expand_path('../../spec/environment', __FILE__) require 'mail' end # Used to run parsing against an arbitrary corpus of email. # For example: http://plg.uwaterloo.ca/~gvcormac/treccorpus/ desc "Provide a LOCATION=/some/dir to verify parsing in bulk, otherwise defaults" task :verify_all => :load_mail do root_of_corpus = ENV['LOCATION'] || 'corpus/spam' @save_failures_to = ENV['SAVE_TO'] || 'corpus/failed_emails' @failed_emails = [] @checked_count = 0 if root_of_corpus root_of_corpus = File.expand_path(root_of_corpus) if not File.directory?(root_of_corpus) raise "\n\tPath '#{root_of_corpus}' is not a directory.\n\n" end else raise "\n\tSupply path to corpus: LOCATION=/path/to/corpus\n\n" end puts "Mail which fails to parse will be saved in '#{@save_failures_to}'" puts "Checking '#{root_of_corpus}' directory (recursively)" elapsed = Benchmark.realtime { dir_node(root_of_corpus) } puts "\n\n" if @failed_emails.any? report_failures_to_stdout end puts "Out of Total: #{@checked_count}" puts 'Elapsed: %.2f ms' % (elapsed * 1000.0) end def dir_node(path) puts "\n\n" puts "Checking emails in '#{path}':" entries = Dir.entries(path) entries.each do |entry| next if ['.', '..'].include?(entry) full_path = File.join(path, entry) if File.file?(full_path) file_node(full_path) elsif File.directory?(full_path) dir_node(full_path) end end end def file_node(path) verify(path) end def verify(path) result, exception = parse_as_mail(path) if result print '.' else save_failure(path, exception) print 'x' end end def save_failure(path, exception) @failed_emails << [path, exception] if @save_failures_to email_basename = File.basename(path) failure_as_filename = exception.message.gsub(/\W/, '_') new_email_name = [failure_as_filename, email_basename].join("_") FileUtils.mkdir_p(@save_failures_to) File.open(File.join(@save_failures_to, new_email_name), 'w+') do |fh| fh << File.read(path) end end end def parse_as_mail(path) @checked_count += 1 Mail.read(path) [true, nil] rescue => e [false, e] end def report_failures_to_stdout @failed_emails.each do |path, exception| puts "#{path}: #{exception.message}\n\t#{exception.backtrace.join("\n\t")}" end puts "Failed: #{@failed_emails.size}" end end mail-2.8.1/tasks/generate_tables000066400000000000000000000121761436372131700166560ustar00rootroot00000000000000#!/usr/bin/env ruby # from https://github.com/rails/rails/blob/master/activesupport/bin/generate_tables # under MIT license # Usage: # ruby tasks/generate_tables # The Unicode version downloaded is determined by the UNICODE_VERSION lib/mail/multibye/unicode.rb require './lib/mail/multibyte/unicode' require 'open-uri' require 'tmpdir' module Mail module Multibyte module Unicode class UnicodeDatabase def load; end end class DatabaseGenerator BASE_URI = "http://www.unicode.org/Public/#{UNICODE_VERSION}/ucd/" SOURCES = { :codepoints => BASE_URI + 'UnicodeData.txt', :composition_exclusion => BASE_URI + 'CompositionExclusions.txt', :grapheme_break_property => BASE_URI + 'auxiliary/GraphemeBreakProperty.txt', :cp1252 => 'http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT' } def initialize @ucd = Unicode::UnicodeDatabase.new end def parse_codepoints(line) codepoint = Codepoint.new raise "Could not parse input." unless line =~ /^ ([0-9A-F]+); # code ([^;]+); # name ([A-Z]+); # general category ([0-9]+); # canonical combining class ([A-Z]+); # bidi class (<([A-Z]*)>)? # decomposition type ((\ ?[0-9A-F]+)*); # decomposition mapping ([0-9]*); # decimal digit ([0-9]*); # digit ([^;]*); # numeric ([YN]*); # bidi mirrored ([^;]*); # unicode 1.0 name ([^;]*); # iso comment ([0-9A-F]*); # simple uppercase mapping ([0-9A-F]*); # simple lowercase mapping ([0-9A-F]*)$/ix # simple titlecase mapping codepoint.code = $1.hex #codepoint.name = $2 #codepoint.category = $3 codepoint.combining_class = Integer($4) #codepoint.bidi_class = $5 codepoint.decomp_type = $7 codepoint.decomp_mapping = ($8=='') ? nil : $8.split.collect { |element| element.hex } #codepoint.bidi_mirrored = ($13=='Y') ? true : false codepoint.uppercase_mapping = ($16=='') ? 0 : $16.hex codepoint.lowercase_mapping = ($17=='') ? 0 : $17.hex #codepoint.titlecase_mapping = ($18=='') ? nil : $18.hex @ucd.codepoints[codepoint.code] = codepoint end def parse_grapheme_break_property(line) if line =~ /^([0-9A-F.]+)\s*;\s*([\w]+)\s*#/ type = $2.downcase.intern @ucd.boundary[type] ||= [] if $1.include? '..' parts = $1.split '..' @ucd.boundary[type] << (parts[0].hex..parts[1].hex) else @ucd.boundary[type] << $1.hex end end end def parse_composition_exclusion(line) if line =~ /^([0-9A-F]+)/i @ucd.composition_exclusion << $1.hex end end def parse_cp1252(line) if line =~ /^([0-9A-Fx]+)\s([0-9A-Fx]+)/i @ucd.cp1252[$1.hex] = $2.hex end end def create_composition_map @ucd.codepoints.each do |_, cp| if !cp.nil? and cp.combining_class == 0 and cp.decomp_type.nil? and !cp.decomp_mapping.nil? and cp.decomp_mapping.length == 2 and @ucd.codepoints[cp.decomp_mapping[0]].combining_class == 0 and !@ucd.composition_exclusion.include?(cp.code) @ucd.composition_map[cp.decomp_mapping[0]] ||= {} @ucd.composition_map[cp.decomp_mapping[0]][cp.decomp_mapping[1]] = cp.code end end end def normalize_boundary_map @ucd.boundary.each do |k,v| if [:lf, :cr].include? k @ucd.boundary[k] = v[0] end end end def parse SOURCES.each do |type, url| filename = File.join(Dir.tmpdir, "#{url.split('/').last}") unless File.exist?(filename) $stderr.puts "Downloading #{url.split('/').last}" File.open(filename, 'wb') do |target| open(url) do |source| source.each_line { |line| target.write line } end end end File.open(filename) do |file| file.each_line { |line| send "parse_#{type}".intern, line } end end create_composition_map normalize_boundary_map end def dump_to(filename) File.open(filename, 'wb') do |f| f.write Marshal.dump([@ucd.codepoints, @ucd.composition_exclusion, @ucd.composition_map, @ucd.boundary, @ucd.cp1252]) end end end end end end if __FILE__ == $0 filename = Mail::Multibyte::Unicode::UnicodeDatabase.filename generator = Mail::Multibyte::Unicode::DatabaseGenerator.new generator.parse print "Writing to: #{filename}" generator.dump_to filename puts " (#{File.size(filename)} bytes)" end mail-2.8.1/tasks/ragel.rake000066400000000000000000000022331436372131700155360ustar00rootroot00000000000000# RFC 6532 extensions rely on RFC 3629 UTF-8 chars rule 'lib/mail/parsers/rfc5234_abnf_core_rules.rl' => 'lib/mail/parsers/rfc3629_utf8.rl' # All RFC 5322 parsers depend on ABNF core rules rule %r|rfc5322_.+\.rl\z| => 'lib/mail/parsers/rfc5234_abnf_core_rules.rl' # RFC 5322 parser depends on its submodules file 'lib/mail/parsers/rfc5322.rl' => FileList['lib/mail/parsers/rfc5322_*.rl'] rule %r|_parser\.rl\z| => 'lib/mail/parsers/rfc5322.rl' # Ruby parsers depend on Ragel parser definitions # (remove -L to include line numbers for debugging) rule %r|_parser\.rb\z| => '%X.rl' do |t| sh "ragel -s -R -L -F1 -o #{t.name} #{t.source}" sh "bundle exec rufo --simple-exit #{t.name}" end # Dot files for Ragel parsers rule %r|_parser\.dot\z| => '%X.rl' do |t| sh "ragel -s -V -o #{t.name} #{t.source}" end rule %r|_parser\.svg\z| => '%X.dot' do |t| sh "dot -v -Tsvg -Goverlap=scale -o #{t.name} #{t.source}" end desc "Generate Ruby parsers from Ragel definitions" namespace :ragel do ragel_parsers = FileList['lib/mail/parsers/*_parser.rl'] task :generate => ragel_parsers.ext('.rb') task :svg => ragel_parsers.ext('.svg') end task :ragel => 'ragel:generate' mail-2.8.1/tools/000077500000000000000000000000001436372131700136135ustar00rootroot00000000000000mail-2.8.1/tools/console000077500000000000000000000002601436372131700152010ustar00rootroot00000000000000#!/usr/bin/env ruby require 'rubygems' require 'bundler/setup' begin require 'byebug' rescue LoadError end require 'mail' require 'irb' require 'irb/completion' IRB.start