| Merging rails4 to master (slightly functional) - warvox - VoIP based wardialing… | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit d374265bf3a559dfeecf81ef00cce1713c15eab3 | |
| parent 2077a27b56e14cbd9c7a1bbc1f3845c1529639f7 | |
| Author: HD Moore <[email protected]> | |
| Date: Tue, 3 Feb 2015 00:38:43 -0600 | |
| Merging rails4 to master (slightly functional) | |
| Diffstat: | |
| M Gemfile | 49 ++++++++++++++---------------… | |
| M Gemfile.lock | 278 ++++++++++++++---------------… | |
| A app/assets/datatables/jquery.dataT… | 0 | |
| A app/assets/datatables/jquery.datat… | 0 | |
| M app/assets/javascripts/application… | 6 ++---- | |
| M app/assets/javascripts/bootstrap.j… | 6 ++---- | |
| M app/assets/javascripts/highcharts.… | 542 +++++++++++++++++----------… | |
| D app/assets/stylesheets/application… | 7 ------- | |
| M app/assets/stylesheets/application… | 548 +++++++++++++++++++++++++++… | |
| A app/assets/stylesheets/bootstrap_a… | 0 | |
| M app/assets/stylesheets/bootstrap_a… | 408 ++++++++++++++++++---------… | |
| M app/controllers/analyze_controller… | 283 +++++++++++++++------------… | |
| M app/controllers/calls_controller.rb | 6 ++---- | |
| M app/controllers/jobs_controller.rb | 6 ++---- | |
| M app/controllers/projects_controlle… | 6 ++---- | |
| M app/controllers/providers_controll… | 3 +-- | |
| M app/models/call.rb | 182 +++++++++++++++++------------… | |
| M app/models/job.rb | 14 +++++++++++--- | |
| M app/models/line.rb | 2 +- | |
| M app/views/analyze/index.html.erb | 4 ++-- | |
| M app/views/analyze/view.html.erb | 4 ++-- | |
| A app/views/application/_nav.html.erb | 67 +++++++++++++++++++++++++++++… | |
| M app/views/calls/index.html.erb | 31 ++++++++++++++++-------------… | |
| M app/views/home/about.html.erb | 2 +- | |
| M app/views/home/index.html.erb | 8 ++++---- | |
| M app/views/jobs/index.html.erb | 10 +++++----- | |
| M app/views/jobs/new_analyze.html.erb | 4 ++-- | |
| M app/views/jobs/new_dialer.html.erb | 2 +- | |
| M app/views/jobs/results.html.erb | 74 ++++++++++++++++-------------… | |
| M app/views/jobs/view_results.html.e… | 6 +++--- | |
| M app/views/layouts/application.html… | 50 ++++-----------------------… | |
| M app/views/projects/edit.html.erb | 2 +- | |
| M app/views/projects/index.html.erb | 6 +++--- | |
| M app/views/projects/new.html.erb | 2 +- | |
| M app/views/projects/show.html.erb | 28 ++++++++++++++-------------- | |
| M app/views/providers/edit.html.erb | 2 +- | |
| M app/views/providers/index.html.erb | 8 ++++---- | |
| M app/views/providers/new.html.erb | 2 +- | |
| M app/views/shared/_call_signal.html… | 4 ++-- | |
| M app/views/shared/graphs/_lines_by_… | 2 +- | |
| M bin/iaxrecord.rb | 4 ++-- | |
| M bin/resetpw | 2 +- | |
| M bin/worker.rb | 10 +++++----- | |
| M bin/worker_manager.rb | 10 +++++----- | |
| M config/environments/development.rb | 7 +++---- | |
| M config/environments/production.rb | 8 ++++---- | |
| M config/environments/test.rb | 4 ++++ | |
| M config/initializers/warvox.rb | 2 +- | |
| A config/locales/en.bootstrap.yml | 23 +++++++++++++++++++++++ | |
| M config/routes.rb | 56 ++++++++++++++++-------------… | |
| D db/schema.rb | 189 -----------------------------… | |
| M lib/warvox/jobs/analysis.rb | 8 ++++---- | |
| M lib/warvox/jobs/dialer.rb | 2 +- | |
| A lib/warvox/proto/iax2.rb | 2 ++ | |
| A lib/warvox/proto/iax2/call.rb | 345 +++++++++++++++++++++++++++++… | |
| A lib/warvox/proto/iax2/client.rb | 219 +++++++++++++++++++++++++++++… | |
| A lib/warvox/proto/iax2/codecs.rb | 5 +++++ | |
| A lib/warvox/proto/iax2/codecs/alaw.… | 16 ++++++++++++++++ | |
| A lib/warvox/proto/iax2/codecs/g711.… | 2176 +++++++++++++++++++++++++++… | |
| A lib/warvox/proto/iax2/codecs/mulaw… | 17 +++++++++++++++++ | |
| A lib/warvox/proto/iax2/constants.rb | 262 +++++++++++++++++++++++++++++… | |
| 61 files changed, 4791 insertions(+), 1240 deletions(-) | |
| --- | |
| diff --git a/Gemfile b/Gemfile | |
| @@ -1,42 +1,37 @@ | |
| source 'http://rubygems.org' | |
| -ruby '1.9.3' | |
| -gem 'thin' | |
| -gem 'rails', '>=3.2.20', '<4.0' | |
| -gem 'pg', '>=0.11' | |
| +gem 'unicorn' | |
| +gem 'rails', '>=4.1.9', '< 4.2.0' | |
| +gem 'pg', '>=0.17' | |
| -gem 'jquery-rails' | |
| -gem 'jquery-datatables-rails' | |
| - | |
| -# Integer array support (until Rails 4.0 is released) | |
| -# Git version required to work around this bug: https://github.com/dockyard/po… | |
| -gem 'postgres_ext', :git => 'git://github.com/dockyard/postgres_ext.git' | |
| +gem 'jquery-rails', '>= 3.1.2' | |
| +gem 'jquery-datatables-rails', '>= 2.2.3' | |
| +#gem 'postgres_ext', :git => 'git://github.com/dockyard/postgres_ext.git' | |
| gem 'kissfft' | |
| gem 'rex', '~> 2.0.3' | |
| -# Gems used only for assets and not required | |
| -# in production environments by default. | |
| -group :assets do | |
| - gem 'sass-rails', '~> 3.2.3' | |
| - gem 'coffee-rails', '~> 3.2.1' | |
| - gem 'uglifier', '>= 1.0.3' | |
| -end | |
| - | |
| -gem 'authlogic' | |
| -gem 'rails-settings-cached' | |
| - | |
| -gem "twitter-bootstrap-rails", :git => 'https://github.com/seyhunak/twitter-bo… | |
| -gem 'formtastic' | |
| -gem 'formtastic-bootstrap' | |
| -gem 'rails_bootstrap_navbar' | |
| -gem 'less-rails-bootstrap' | |
| +gem 'bootstrap-sass', '>= 3.2.0' | |
| +gem 'sass-rails', '~> 4.0.2' | |
| +gem 'coffee-rails', '~> 4.0.1' | |
| +gem 'uglifier', '>= 1.0.3' | |
| +gem 'protected_attributes', '~> 1.0.7' | |
| +gem 'autoprefixer-rails' | |
| + | |
| +gem 'authlogic', '>= 3.4.0' | |
| +gem 'rails-settings-cached', '>= 0.4.1' | |
| +gem "breadcrumbs_on_rails" | |
| + | |
| +gem 'formtastic', '>= 3.0.0' | |
| +gem 'formtastic-bootstrap', '>= 3.0.0' | |
| gem 'therubyracer' | |
| +gem 'font-awesome-rails' | |
| + | |
| gem 'reportable', :git => 'git://github.com/hmoore-r7/reportable.git', :requir… | |
| gem 'will_paginate', '~> 3.0' | |
| gem 'will_paginate-bootstrap' | |
| -gem 'dynamic_form' | |
| +gem 'dynamic_form', '>= 1.1.4' | |
| gem 'psych_shield' | |
| gem 'scrypt' | |
| diff --git a/Gemfile.lock b/Gemfile.lock | |
| @@ -1,206 +1,186 @@ | |
| GIT | |
| - remote: git://github.com/dockyard/postgres_ext.git | |
| - revision: b1cc1ab75b86e8ff9ee77500d1de1640c417ea80 | |
| - specs: | |
| - postgres_ext (0.3.0) | |
| - activerecord (~> 3.2.0) | |
| - pg_array_parser (~> 0.0.8) | |
| - | |
| -GIT | |
| remote: git://github.com/hmoore-r7/reportable.git | |
| - revision: f8532eeb704c511bb75b5bd4fd9656243c9b118b | |
| + revision: 073bc1657ee301f4c961f14247ef1a58cf38bd1f | |
| specs: | |
| - reportable (1.2.0) | |
| + reportable (1.3.1) | |
| activerecord (>= 3.0) | |
| activesupport (>= 3.0.0) | |
| -GIT | |
| - remote: https://github.com/seyhunak/twitter-bootstrap-rails.git | |
| - revision: 6ae6c669402ec3d85ced21cf8ce4c7c4b8a985c1 | |
| - specs: | |
| - twitter-bootstrap-rails (3.2.0) | |
| - actionpack (>= 3.1) | |
| - execjs | |
| - rails (>= 3.1) | |
| - railties (>= 3.1) | |
| - | |
| GEM | |
| remote: http://rubygems.org/ | |
| specs: | |
| - actionmailer (3.2.20) | |
| - actionpack (= 3.2.20) | |
| - mail (~> 2.5.4) | |
| - actionpack (3.2.20) | |
| - activemodel (= 3.2.20) | |
| - activesupport (= 3.2.20) | |
| - builder (~> 3.0.0) | |
| + actionmailer (4.1.9) | |
| + actionpack (= 4.1.9) | |
| + actionview (= 4.1.9) | |
| + mail (~> 2.5, >= 2.5.4) | |
| + actionpack (4.1.9) | |
| + actionview (= 4.1.9) | |
| + activesupport (= 4.1.9) | |
| + rack (~> 1.5.2) | |
| + rack-test (~> 0.6.2) | |
| + actionview (4.1.9) | |
| + activesupport (= 4.1.9) | |
| + builder (~> 3.1) | |
| erubis (~> 2.7.0) | |
| - journey (~> 1.0.4) | |
| - rack (~> 1.4.5) | |
| - rack-cache (~> 1.2) | |
| - rack-test (~> 0.6.1) | |
| - sprockets (~> 2.2.1) | |
| - activemodel (3.2.20) | |
| - activesupport (= 3.2.20) | |
| - builder (~> 3.0.0) | |
| - activerecord (3.2.20) | |
| - activemodel (= 3.2.20) | |
| - activesupport (= 3.2.20) | |
| - arel (~> 3.0.2) | |
| - tzinfo (~> 0.3.29) | |
| - activeresource (3.2.20) | |
| - activemodel (= 3.2.20) | |
| - activesupport (= 3.2.20) | |
| - activesupport (3.2.20) | |
| - i18n (~> 0.6, >= 0.6.4) | |
| - multi_json (~> 1.0) | |
| - arel (3.0.3) | |
| - authlogic (3.4.2) | |
| + activemodel (4.1.9) | |
| + activesupport (= 4.1.9) | |
| + builder (~> 3.1) | |
| + activerecord (4.1.9) | |
| + activemodel (= 4.1.9) | |
| + activesupport (= 4.1.9) | |
| + arel (~> 5.0.0) | |
| + activesupport (4.1.9) | |
| + i18n (~> 0.6, >= 0.6.9) | |
| + json (~> 1.7, >= 1.7.7) | |
| + minitest (~> 5.1) | |
| + thread_safe (~> 0.1) | |
| + tzinfo (~> 1.1) | |
| + arel (5.0.1.20140414130214) | |
| + authlogic (3.4.4) | |
| activerecord (>= 3.2) | |
| activesupport (>= 3.2) | |
| request_store (~> 1.0) | |
| - builder (3.0.4) | |
| - coffee-rails (3.2.2) | |
| + scrypt (~> 1.2) | |
| + autoprefixer-rails (5.1.3) | |
| + execjs | |
| + json | |
| + bootstrap-sass (3.3.3) | |
| + autoprefixer-rails (>= 5.0.0.1) | |
| + sass (>= 3.2.19) | |
| + breadcrumbs_on_rails (2.3.0) | |
| + builder (3.2.2) | |
| + coffee-rails (4.0.1) | |
| coffee-script (>= 2.2.0) | |
| - railties (~> 3.2.0) | |
| - coffee-script (2.2.0) | |
| + railties (>= 4.0.0, < 5.0) | |
| + coffee-script (2.3.0) | |
| coffee-script-source | |
| execjs | |
| - coffee-script-source (1.6.2) | |
| - commonjs (0.2.6) | |
| - daemons (1.1.9) | |
| + coffee-script-source (1.9.0) | |
| dynamic_form (1.1.4) | |
| erubis (2.7.0) | |
| - eventmachine (1.0.3) | |
| - execjs (1.4.0) | |
| - multi_json (~> 1.0) | |
| - ffi (1.9.3) | |
| + execjs (2.2.2) | |
| + ffi (1.9.6) | |
| ffi-compiler (0.1.3) | |
| ffi (>= 1.0.0) | |
| rake | |
| - formtastic (2.2.1) | |
| - actionpack (>= 3.0) | |
| - formtastic-bootstrap (2.0.0) | |
| - formtastic (~> 2.2) | |
| - formtastic-bootstrap | |
| + font-awesome-rails (4.3.0.0) | |
| + railties (>= 3.2, < 5.0) | |
| + formtastic (3.1.3) | |
| + actionpack (>= 3.2.13) | |
| + formtastic-bootstrap (3.1.0) | |
| + formtastic (>= 3.0) | |
| hike (1.2.3) | |
| - i18n (0.6.11) | |
| - journey (1.0.4) | |
| - jquery-datatables-rails (1.11.2) | |
| + i18n (0.7.0) | |
| + jquery-datatables-rails (3.1.1) | |
| + actionpack (>= 3.1) | |
| jquery-rails | |
| - jquery-rails (2.2.1) | |
| + railties (>= 3.1) | |
| + sass-rails | |
| + jquery-rails (3.1.2) | |
| railties (>= 3.0, < 5.0) | |
| thor (>= 0.14, < 2.0) | |
| - json (1.8.1) | |
| - kissfft (0.0.1) | |
| - less (2.3.1) | |
| - commonjs (~> 0.2.6) | |
| - less-rails (2.3.2) | |
| - actionpack (>= 3.1) | |
| - less (~> 2.3.1) | |
| - less-rails-bootstrap (2.3.2) | |
| - less-rails (~> 2.3.1) | |
| - libv8 (3.11.8.17) | |
| - mail (2.5.4) | |
| - mime-types (~> 1.16) | |
| - treetop (~> 1.4.8) | |
| - mime-types (1.25.1) | |
| + json (1.8.2) | |
| + kgio (2.9.3) | |
| + kissfft (0.0.2) | |
| + libv8 (3.16.14.7) | |
| + mail (2.6.3) | |
| + mime-types (>= 1.16, < 3) | |
| + mime-types (2.4.3) | |
| + minitest (5.5.1) | |
| multi_json (1.10.1) | |
| - pg (0.17.1) | |
| - pg_array_parser (0.0.8) | |
| - polyglot (0.3.5) | |
| + pg (0.18.1) | |
| + protected_attributes (1.0.8) | |
| + activemodel (>= 4.0.1, < 5.0) | |
| psych_shield (0.0.4) | |
| - rack (1.4.5) | |
| - rack-cache (1.2) | |
| - rack (>= 0.4) | |
| - rack-ssl (1.3.4) | |
| - rack | |
| - rack-test (0.6.2) | |
| + rack (1.5.2) | |
| + rack-test (0.6.3) | |
| rack (>= 1.0) | |
| - rails (3.2.20) | |
| - actionmailer (= 3.2.20) | |
| - actionpack (= 3.2.20) | |
| - activerecord (= 3.2.20) | |
| - activeresource (= 3.2.20) | |
| - activesupport (= 3.2.20) | |
| - bundler (~> 1.0) | |
| - railties (= 3.2.20) | |
| - rails-settings-cached (0.2.4) | |
| - rails (>= 3.0.0) | |
| - rails_bootstrap_navbar (0.1.5.beta) | |
| - rails (>= 3.0.0) | |
| - railties (3.2.20) | |
| - actionpack (= 3.2.20) | |
| - activesupport (= 3.2.20) | |
| - rack-ssl (~> 1.3.2) | |
| + rails (4.1.9) | |
| + actionmailer (= 4.1.9) | |
| + actionpack (= 4.1.9) | |
| + actionview (= 4.1.9) | |
| + activemodel (= 4.1.9) | |
| + activerecord (= 4.1.9) | |
| + activesupport (= 4.1.9) | |
| + bundler (>= 1.3.0, < 2.0) | |
| + railties (= 4.1.9) | |
| + sprockets-rails (~> 2.0) | |
| + rails-settings-cached (0.4.1) | |
| + rails (>= 4.0.0) | |
| + railties (4.1.9) | |
| + actionpack (= 4.1.9) | |
| + activesupport (= 4.1.9) | |
| rake (>= 0.8.7) | |
| - rdoc (~> 3.4) | |
| - thor (>= 0.14.6, < 2.0) | |
| - rake (10.3.2) | |
| - rdoc (3.12.2) | |
| - json (~> 1.4) | |
| - ref (1.0.4) | |
| + thor (>= 0.18.1, < 2.0) | |
| + raindrops (0.13.0) | |
| + rake (10.4.2) | |
| + ref (1.0.5) | |
| request_store (1.1.0) | |
| - rex (2.0.3) | |
| - sass (3.2.7) | |
| - sass-rails (3.2.6) | |
| - railties (~> 3.2.0) | |
| - sass (>= 3.1.10) | |
| - tilt (~> 1.3) | |
| + rex (2.0.5) | |
| + sass (3.2.19) | |
| + sass-rails (4.0.5) | |
| + railties (>= 4.0.0, < 5.0) | |
| + sass (~> 3.2.2) | |
| + sprockets (~> 2.8, < 3.0) | |
| + sprockets-rails (~> 2.0) | |
| scrypt (1.2.1) | |
| ffi-compiler (>= 0.0.2) | |
| rake | |
| - sprockets (2.2.3) | |
| + sprockets (2.12.3) | |
| hike (~> 1.2) | |
| multi_json (~> 1.0) | |
| rack (~> 1.0) | |
| tilt (~> 1.1, != 1.3.0) | |
| - therubyracer (0.11.4) | |
| - libv8 (~> 3.11.8.12) | |
| + sprockets-rails (2.2.4) | |
| + actionpack (>= 3.0) | |
| + activesupport (>= 3.0) | |
| + sprockets (>= 2.8, < 4.0) | |
| + therubyracer (0.12.1) | |
| + libv8 (~> 3.16.14.0) | |
| ref | |
| - thin (1.5.1) | |
| - daemons (>= 1.0.9) | |
| - eventmachine (>= 0.12.6) | |
| - rack (>= 1.0.0) | |
| thor (0.19.1) | |
| + thread_safe (0.3.4) | |
| tilt (1.4.1) | |
| - treetop (1.4.15) | |
| - polyglot | |
| - polyglot (>= 0.3.1) | |
| - tzinfo (0.3.42) | |
| - uglifier (2.0.1) | |
| + tzinfo (1.2.2) | |
| + thread_safe (~> 0.1) | |
| + uglifier (2.7.0) | |
| execjs (>= 0.3.0) | |
| - multi_json (~> 1.0, >= 1.0.2) | |
| + json (>= 1.8.0) | |
| + unicorn (4.8.3) | |
| + kgio (~> 2.6) | |
| + rack | |
| + raindrops (~> 0.7) | |
| will_paginate (3.0.7) | |
| - will_paginate-bootstrap (0.2.2) | |
| + will_paginate-bootstrap (1.0.1) | |
| will_paginate (>= 3.0.3) | |
| PLATFORMS | |
| ruby | |
| DEPENDENCIES | |
| - authlogic | |
| - coffee-rails (~> 3.2.1) | |
| - dynamic_form | |
| - formtastic | |
| - formtastic-bootstrap | |
| - jquery-datatables-rails | |
| - jquery-rails | |
| + authlogic (>= 3.4.0) | |
| + autoprefixer-rails | |
| + bootstrap-sass (>= 3.2.0) | |
| + breadcrumbs_on_rails | |
| + coffee-rails (~> 4.0.1) | |
| + dynamic_form (>= 1.1.4) | |
| + font-awesome-rails | |
| + formtastic (>= 3.0.0) | |
| + formtastic-bootstrap (>= 3.0.0) | |
| + jquery-datatables-rails (>= 2.2.3) | |
| + jquery-rails (>= 3.1.2) | |
| kissfft | |
| - less-rails-bootstrap | |
| - pg (>= 0.11) | |
| - postgres_ext! | |
| + pg (>= 0.17) | |
| + protected_attributes (~> 1.0.7) | |
| psych_shield | |
| - rails (>= 3.2.20, < 4.0) | |
| - rails-settings-cached | |
| - rails_bootstrap_navbar | |
| + rails (>= 4.1.9, < 4.2.0) | |
| + rails-settings-cached (>= 0.4.1) | |
| reportable! | |
| rex (~> 2.0.3) | |
| - sass-rails (~> 3.2.3) | |
| + sass-rails (~> 4.0.2) | |
| scrypt | |
| therubyracer | |
| - thin | |
| - twitter-bootstrap-rails! | |
| uglifier (>= 1.0.3) | |
| + unicorn | |
| will_paginate (~> 3.0) | |
| will_paginate-bootstrap | |
| diff --git a/app/assets/datatables/jquery.dataTables.css b/app/assets/datatable… | |
| diff --git a/app/assets/datatables/jquery.datatables.css b/app/assets/datatable… | |
| diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/app… | |
| @@ -1,11 +1,11 @@ | |
| // Place your application-specific JavaScript functions and classes here | |
| // This file is automatically included by javascript_include_tag :defaults | |
| //= require jquery | |
| +//= require bootstrap-sprockets | |
| //= require jquery_ujs | |
| -//= require twitter/bootstrap | |
| //= require bootstrap-lightbox | |
| //= require dataTables/jquery.dataTables | |
| -//= require dataTables/jquery.dataTables.bootstrap | |
| +//= require dataTables/bootstrap/3/jquery.dataTables.bootstrap | |
| //= require dataTables.hiddenTitle | |
| //= require dataTables.filteringDelay | |
| //= require dataTables.fnReloadAjax | |
| @@ -14,8 +14,6 @@ | |
| //= require highcharts | |
| - | |
| - | |
| function getParameterByName(name) | |
| { | |
| name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); | |
| diff --git a/app/assets/javascripts/bootstrap.js.coffee b/app/assets/javascript… | |
| @@ -1,4 +1,3 @@ | |
| jQuery -> | |
| - $("a[rel=popover]").popover() | |
| - $(".tooltip").tooltip() | |
| - $("a[rel=tooltip]").tooltip() | |
| -\ No newline at end of file | |
| + $("a[rel~=popover], .has-popover").popover() | |
| + $("a[rel~=tooltip], .has-tooltip").tooltip() | |
| diff --git a/app/assets/javascripts/highcharts.js b/app/assets/javascripts/high… | |
| @@ -1,246 +1,308 @@ | |
| /* | |
| - Highcharts JS v2.3.3 (2012-10-04) | |
| + Highcharts JS v4.0.4 (2014-09-02) | |
| - (c) 2009-2011 Torstein Hønsi | |
| + (c) 2009-2014 Torstein Honsi | |
| License: www.highcharts.com/license | |
| */ | |
| -(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}func… | |
| -b){a.splice(c,1);break}}function t(a){return a!==x&&a!==null}function z(a,b,c)… | |
| -b&&r(a,b);e&&H(a,{padding:0,border:R,margin:0});c&&H(a,c);d&&d.appendChild(a);… | |
| -"$1"+d)+(b?c+L(f-a).toFixed(b).slice(2):"")}function sa(a,b){return Array((b||… | |
| -c[c.length-1],e=B[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=B[d[0]],f=… | |
| -j));if(b>=B[oa])i[lb](b>=B[Ka]?1:j*T(i[La]()/j));b>=B[Ka]&&(i[Cb](b>=B[ta]?0:j… | |
| -function Eb(){this.symbol=this.color=0}function Fb(a,b){var c=a.length,d,e;for… | |
| -b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;… | |
| -Db=c+"FullYear"}function va(){}function Pa(a,b,c){this.axis=a;this.pos=b;this.… | |
| -0)};this.textAlign=b.textAlign||(g?c?"right":"left":"center")}function ob(){th… | |
| -function qb(a,b){var c=U?"":b.chart.zoomType;this.zoomX=/x/.test(c);this.zoomY… | |
| -!!e.click;this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.s… | |
| -10)<4,U=!Z&&!Ca&&!!C.createElement("canvas").getContext,Ra,fa=C.documentElemen… | |
| -k=M.lang,l=k.weekdays,b={a:l[g].substr(0,3),A:l[g],d:sa(h),e:h,b:k.shortMonths… | |
| -oa,864E5,Va,6048E5,Ka,2592E6,ta,31556952E3);vb={init:function(a,b,c){var b=b||… | |
| -1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(… | |
| -d,k,l;b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");(k=e[b])&&(e… | |
| -a[c],c,a)===!1)return c}},getScript:a.getScript,inArray:a.inArray,adapterRun:f… | |
| -d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!Ca&&d&&(del… | |
| -a(b);if(c.d)b.toD=c.d,c.d=1;e.stop();e.animate(c,d)},stop:function(b){a(b).sto… | |
| +(function(){function r(a,b){var c;a||(a={});for(c in b)a[c]=b[c];return a}func… | |
| +10)}function Ga(a){return typeof a==="string"}function da(a){return a&&typeof … | |
| +da(b))for(d in b)a.setAttribute(d,b[d]);return e}function ra(a){return Ha(a)?a… | |
| +b,c,d){var e=K.numberFormat,f=E.lang,g=+a||0,h=b===-1?(g.toString().split(".")… | |
| +a.unshift(d);return c.apply(this,a)}}function Ja(a,b){for(var c="{",d=!1,e,f,g… | |
| +V.LN10))}function nb(a,b,c,d){var e,c=p(c,1);e=a/c;b||(b=[1,2,2.5,5,10],d===!1… | |
| +function Pa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),d… | |
| +"Hours";rb=b+"Day";Xa=b+"Date";fb=b+"Month";gb=b+"FullYear";Cb=c+"Minutes";Db=… | |
| +(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bo… | |
| +ba=!!x.createElementNS&&!!x.createElementNS(xa,"svg").createSVGRect,Ob=Ua&&par… | |
| +h=d[Xa](),i=d[fb](),j=d[gb](),k=E.lang,l=k.weekdays,d=r({a:l[g].substr(0,3),A:… | |
| +a;if(b)throw c;G.console&&console.log(c)};A={millisecond:1,second:1E3,minute:6… | |
| +a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.lengt… | |
| +h)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(b,… | |
| +a.start=f[0],a.end=f[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.t… | |
| +addAnimSetter:function(b,c){a.Tween?a.Tween.propHooks[b]={set:c}:a.fx.step[b]=… | |
| +c,d,e){var f=a.Event(c),g="detached"+c,h;!Aa&&d&&(delete d.layerX,delete d.lay… | |
| +a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==u&&b.a… | |
| symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading… | |
| -canvasToolsURL:"http://code.highcharts.com/2.3.3/modules/canvas-tools.js",VMLR… | |
| -position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center"… | |
| -verticalAlign:"bottom",y:0}),cropThreshold:300,pointRange:0,showInLegend:!0,st… | |
| -itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"1… | |
| -hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",mon… | |
| -style:{cursor:"pointer",color:"#909090",fontSize:"10px"}}};var W=M.plotOptions… | |
| -b[3]:"rgba("+b.join(",")+")":a},brighten:function(a){if(Aa(a)&&a!==0){var c;fo… | |
| -i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,p,u=this;la(a)&&t(b)&&(c… | |
| -z(f,"x",d);this.rotation&&z(g,"transform","rotate("+this.rotation+" "+d+" "+w(… | |
| -"3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("lon… | |
| -d;c==="strokeWidth"&&(c="stroke-width");tb&&c==="stroke-width"&&d===0&&(d=1.0E… | |
| -j||z(g,c,d)}return u},symbolAttr:function(a){var b=this;n("x,y,r,start,end,wid… | |
| -0)-2*i);h.height=T((e||this.height||0)-2*i);h.strokeWidth=a;for(f in h)this[f]… | |
| -on:function(a,b){var c=b;fa&&a==="click"&&(a="touchstart",c=function(a){a.prev… | |
| -a);H(this.element,a);return this},htmlGetBBox:function(){var a=this.element,b=… | |
| -marginTop:d}),j&&n(j,function(a){H(a,{marginLeft:c+1,marginTop:d+1})});this.in… | |
| -u,", M12=",-p,", M21=",p,", M22=",u,", sizingMethod='auto expand')"].join(""):… | |
| -!0},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c… | |
| -this.renderer.alignedObjects.push(this)):(a=this.alignOptions,b=this.alignByTr… | |
| -this.bBox,b=this.renderer,c,d=this.rotation,e=this.element,f=this.styles,g=d*a… | |
| -hide:function(){return this.attr({visibility:"hidden"})},add:function(a){var b… | |
| -a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{… | |
| -shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=o(a.width,3… | |
| -arguments)};ra.prototype={Element:va,init:function(a,b,c,d){var e=location,f;f… | |
| -b=function(){H(a,{left:0,top:0});g=a.getBoundingClientRect();H(a,{left:wa(g.le… | |
| -a);return b},draw:function(){},buildText:function(a){for(var b=a.element,c=o(a… | |
| -c[c.length-1]===""&&c.pop();n(c,function(c,d){var h,da=0,q,c=c.replace(/<span/… | |
| -da?m.dx=3:m.x=g;if(!da){if(d){!Z&&a.renderer.forExport&&H(o,{display:"block"})… | |
| -1?(c=t,t=[],c.length&&(o=C.createElementNS(pa,"tspan"),z(o,{dy:j||16,x:g}),n&&… | |
| -delete e.style;f=A(e,ka("stroke","#68A","fill",ka("linearGradient",a,"stops",[… | |
| -l))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=s(a[1])-b%2/2);a[2]===a[5… | |
| -a.r:e;e=this.createElement("rect").attr({rx:e,ry:e,fill:R});return e.attr(X(a)… | |
| -f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlin… | |
| -height:0}),Q("img",{onload:function(){k(g,Jb[j]=[this.width,this.height])},src… | |
| -c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.en… | |
| -g="linearGradient":a&&a.radialGradient&&(g="radialGradient");if(g){var c=a[g],… | |
| -k=e.get("a")):(j=a[1],k=1);a=d.createElement("stop").attr({offset:a[0],"stop-c… | |
| -f&&a.css({position:"absolute"});a.x=b;a.y=c;return a},html:function(a,b,c){var… | |
| -c=h.box.parentNode,d=[];if(a){if(b=a.div,!b){for(;a;)d.push(a),a=a.parentGroup… | |
| -w(a||11),a=a<24?a+4:s(a*1.2),b=s(a*0.8);return{h:a,b:b}},label:function(a,b,c,… | |
| -I(p,"add",l);g.width=function(a){Ga=a;return!1};g.height=function(a){v=a;retur… | |
| -p.height,0,fb["stroke-width"]),o.add(p);o.attr(A({width:p.width,height:p.heigh… | |
| -{},a=A({},a);n("fontSize,fontWeight,fontFamily,color,lineHeight,width".split("… | |
| -";"];(b==="shape"||b===ia)&&d.push("left:0;top:0;width:1px;height:1px;");Qa&&d… | |
| -return this},updateTransform:va.prototype.htmlUpdateTransform,attr:function(a,… | |
| -k=!0),m=!0;else if(c==="d"){d=d||[];this.d=d.join(" ");e=d.length;for(m=[];e--… | |
| -g[c]=d,m=!0;else if(c==="x"||c==="y")this[c]=d,g[{x:"left",y:"top"}[c]]=d;else… | |
| -else if(h==="shape"&&c==="rotation")this[c]=d,f.style.left=-s(Y(d*ab)+1)+"px",… | |
| -b.destroyClip(),a={clip:Qa?"inherit":"rect(auto)"});return b.css(a)},css:va.pr… | |
| -if(c===9||c===11)a[c-4]=a[c-2]=w(a[c-2])-10*b;return a.join(" ")},shadow:funct… | |
| -o(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" op… | |
| -"urn:schemas-microsoft-com:vml"),C.createStyleSheet().cssText="hcv\\:fill, hcv… | |
| -s(b?e:f)+"px,"+s(b?c:d)+"px)"};!b&&Qa&&a.element.nodeName!=="IMG"&&r(c,{width:… | |
| -Q(e.prepVML(h),null,null,b)};p=a[0];s=a[a.length-1];p[0]>0&&a.unshift([0,p[1]]… | |
| -0.5,x+=(A[1]-w.y)/w.height-0.5,r*=A[2]/w.width,P*=A[2]/w.height);t='src="'+M.g… | |
| -' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.rep… | |
| -a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createE… | |
| -symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||d,c=V(f),d=Y(… | |
| -arguments):(h=O(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b… | |
| -d){b.length===0&&Qb(d,a);b.push(c)}}}();Ra=ja||gb||ra;Pa.prototype={addLabel:f… | |
| -chart:c,isFirst:i,isLast:j,dateTimeLabelFormat:l,value:a.isLog?ea(ba(k)):k});f… | |
| -b=this.labelBBox.width,a=b*{left:0,center:0.5,right:1}[a.align]-a.x;return[-a,… | |
| -f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null… | |
| -1)%i*16);return{x:a,y:b}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine… | |
| -r.x,r=r.y,y=c.staggerLines;if(p){i=c.getPlotLinePath(i+F,p,b);if(k===x){k={str… | |
| -1)||this.isLast&&!o(d.showLastLabel,1)?v=!1:!y&&f&&j.overflow==="justify"&&!th… | |
| -i=ma(i),l=ma(l));if(h){if(u=b.getPlotLinePath(l,h),d={stroke:q,"stroke-width":… | |
| -t(f.text)&&u&&u.length&&b.width>0&&b.height>0){f=A({align:c&&k&&"center",x:c?!… | |
| -Hb.prototype={destroy:function(){Ea(this,this.axis)},setTotal:function(a){this… | |
| -1),c=c.translate(0),c=L(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f… | |
| -labels:G,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minor… | |
| -labels:{align:"right",x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,st… | |
| -x:0,y:-5},title:{rotation:0}},init:function(a,b){var c=b.isX;this.horiz=a.inve… | |
| -e==="logarithmic";this.isLinked=t(d.linkedTo);this.isDatetimeAxis=f;this.tickm… | |
| -!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;this.addP… | |
| -this.axis,b=this.value,c=this.dateTimeLabelFormat,d=M.lang.numericSymbols,e=d&… | |
| -i,j,k,l,m,p,u,n,q,D=h.threshold,s,r=[],v=0;a.hasVisibleSeries=!0;if(a.isLog&&D… | |
| -for(f=0;f<s;f++)if(n=h[f],q=u[f],i&&(w=(F=q<D)?k:j,P=F?p:l,q=w[n]=t(w[n])?ea(w… | |
| -D)a.dataMax=D,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g… | |
| -null,null,c),j=c&&d.oldChartHeight||d.chartHeight,k=c&&d.oldChartWidth||d.char… | |
| -b=ea(T(b/a)*a),c=ea(wa(c/a)*a),e=[];b<=c;){e.push(b);b=ea(b+a);if(b===d)break;… | |
| -a=o(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:… | |
| -this.max;a+=b)c.push(a);return c},adjustForMinRange:function(){var a=this.opti… | |
| -b=Da(d);c=[b+k,o(a.max,b+k)];if(e)c[2]=this.dataMax;c=Ma(c);c-b<k&&(d[0]=c-k,d… | |
| -e,this.pointRange=b,this.closestPointRange=c;this.oldTransA=g;this.translation… | |
| -b.min=o(c.min,c.dataMin),b.max=o(c.max,c.dataMax),d.type!==b.linkedParent.opti… | |
| -c*k;if(!t(d.max)&&!t(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=… | |
| -if(!l&&b.tickInterval<m)b.tickInterval=m;if(!f&&!e&&(a=J.pow(10,T(J.log(b.tick… | |
| -b.min,b.max),b.tickPositions=i;if(!h)e=i[0],f=i[i.length-1],h=b.minPointOffset… | |
| -!this.categories&&!this.isLinked&&this.options.alignTicks!==!1){var d=this.tic… | |
| -!0});if(e||d||this.isLinked||this.userMin!==this.oldUserMin||this.userMax!==th… | |
| -b;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){this.setExtremes(a… | |
| -this.isLog;return{min:a?ea(ba(this.min)):this.min,max:a?ea(ba(this.max)):this.… | |
| -f=a.ticks,g=a.horiz,h=a.side,i,j=0,k,l=0,m=d.title,p=d.labels,u=0,da=b.axisOff… | |
| -3:"right"}[h]===p.align)u=y(f[a].getLabelSize(),u)}),a.staggerLines&&(u+=(a.st… | |
| -da[h]);a.axisTitleMargin=o(k,u+l+(h!==2&&u&&q*d.labels[g?"y":"x"]));da[h]=y(da… | |
| -f=a?b:c,g=this.opposite,h=this.offset,i=w(e.style.fontSize||12),d={low:f+(a?0:… | |
| -o=d.lineWidth,q,D=b.hasRendered&&t(a.oldMin)&&!isNaN(a.oldMin),r=a.showAxis,s,… | |
| -(l[b]=new nb(a)),s=b+u,v=g[c+1]!==x?g[c+1]+u:a.max,l[b].options={from:e?ba(s):… | |
| -a.axisLine[r?"show":"hide"]();if(h&&r)h[h.isNew?"attr":"animate"](a.getTitlePo… | |
| -d.title=A(d.title,a);this.axisTitle=e&&e.destroy();this.isDirty=!0;o(b,!0)&&c.… | |
| -b=a.stacks,c;S(a);for(c in b)Ea(b[c]),b[c]=null;n([a.ticks,a.minorTicks,a.alte… | |
| -b,anchorX:g?(2*f.anchorX+c)/3:c,anchorY:g?(f.anchorY+d)/2:d});e.label.attr(f);… | |
| -0,g=0,h,a=na(a);c=a[0].tooltipPos;c||(n(a,function(a){h=a.series.yAxis;f+=a.pl… | |
| -e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);k<f+5&&(k=f+5,l&&c>=k&&c<=k+b&&(k=c+f+i));k… | |
| -d.hoverPoints,m,p=f.crosshairs;i=this.shared;h=this.getAnchor(a,b);g=h[0];h=h[… | |
| -e.attr({stroke:m}),e=(f.positioner||this.getPosition).call(this,e.width,e.heig… | |
| -d.renderer.path(i).attr(j).add()}}E(d,"tooltipRefresh",{text:k,x:g+d.plotLeft,… | |
| -b[e?"xAxis":"yAxis"].push({axis:d,value:d.translate(((c.inverted?!e:e)?a.chart… | |
| -c[i].options.enableMouseTracking!==!1&&!c[i].noSharedTooltip&&c[i].tooltipPoin… | |
| -na(b)[0].plotX===x&&(a=!1);if(a)e.refresh(b);else{if(d)d.onMouseOut();if(c)c.o… | |
| -0,1);!isNaN(e)&&!isNaN(d)&&(f[b?"xAxis":"yAxis"].push({axis:a,min:O(e,d),max:y… | |
| -!c.isInsidePlot(a.pageX-b.chartPosition.left-c.plotLeft,a.pageY-b.chartPositio… | |
| -!1;var d=a.chartX,h=a.chartY,l=!c.isInsidePlot(d-c.plotLeft,h-c.plotTop);fa&&a… | |
| -c.plotLeft,b.mouseDownY-c.plotTop);if(c.hasCartesianSeries&&(b.zoomX||b.zoomY)… | |
| -b.options.chart.panning&&c.pan(d)}if(!l)b.onmousemove(a);return l||!c.hasCarte… | |
| -f=d.plotY,r(d,{pageX:b.chartPosition.left+c.plotLeft+(c.inverted?c.plotWidth-f… | |
| -b.onclick=b.onmousedown=b.onmousemove=b.ontouchstart=b.ontouchend=b.ontouchmov… | |
| -b.itemMarginTop=f;b.padding=e;b.initialItemX=e;b.initialItemY=e-5;b.maxItemWid… | |
| -d!==x&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.sy… | |
| -this;n(a.allItems,function(b){var c=b.checkbox,d=a.group.alignAttr;c&&H(c,{lef… | |
| -t.drawLegendSymbol(b,a),a.legendItem=q=d.text(e.labelFormatter.call(a),l?g+h:-… | |
| -a.visible),r&&s))a.checkbox=Q("input",{type:"checkbox",checked:a.selected,defa… | |
| -y(g,b.lastLineHeight);a._legendItemPos=[b.itemX,b.itemY];f?b.itemX+=e:(b.itemY… | |
| -a.clipRect=c.clipRect(0,0,9999,b.chartHeight),a.contentGroup.clip(a.clipRect);… | |
| -0&&h>0)i[i.isNew?"attr":"animate"](i.crisp(null,null,null,g,h)),i.isNew=!1}els… | |
| -(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h=this.clipRect,i=e.… | |
| -this.down=d.symbol("triangle-down",0,0,k,k).on("click",function(){b.scroll(1,j… | |
| -1?f:g}).css({cursor:d===1?"default":"pointer"}),h.attr({text:d+"/"+this.pageCo… | |
| -"addSeries",{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;b&&e.r… | |
| -m=[];ua(a,this);for(l&&this.cloneRenderTo();j--;)if(a=c[j],a.isDirty&&a.option… | |
| -"afterSetExtremes",a.getExtremes())});if(a.isDirty||h||g)a.redraw(),h=!0})}h&&… | |
| -"px",height:this.plotHeight+"px",zIndex:10,display:R}),this.container),this.lo… | |
| -c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];fo… | |
| -n(this.series,function(b){a=a.concat(Kb(b.points,function(a){return a.selected… | |
| -this.resetZoomButton.alignTo=f},zoomOut:function(){var a=this,b=a.resetZoomBut… | |
| -c=this.mouseDownX,d=b.pointRange/2,e=b.getExtremes(),f=b.translate(c-a,!0)+d,c… | |
| -a[0],d=c[b],e=a[1],a=a[2];d&&e&&(c[b]=d=d.destroy());a&&a.text&&!d&&(c[b]=c.re… | |
| -400)},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&… | |
| -a.offsetWidth||this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=th… | |
| -d=a.spacingBottom,a=a.spacingLeft,e,f=this.legend,g=this.optionsMarginTop,h=th… | |
| -y(this.plotTop,l+o(k.margin,15)+b);if(f.display&&!m.floating)if(q==="right"){i… | |
| -this.hasCartesianSeries&&n(this.axes,function(a){a.getOffset()});t(h)||(this.p… | |
| -h}}var b=this,c=b.options.chart,d=b.renderTo,e;I(K,"resize",a);I(b,"destroy",f… | |
| -d.plotHeight=f-d.plotTop-d.marginBottom;d.maxTicks=null;n(d.axes,function(a){a… | |
| -f=d.spacingRight,g=d.spacingBottom,h=d.spacingLeft,i,j,k,l;this.plotLeft=i=s(t… | |
| -resetMargins:function(){var a=this.options.chart,b=a.spacingRight,c=a.spacingB… | |
| -0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plot… | |
| -if(l)h?h.animate(t):this.plotBGImage=b.image(l,o,n,q,r).add();s?s.animate({wid… | |
| -e--;)(c=$[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},render:function(){var … | |
| -a.setTooltipPoints();a.render()});e.items&&n(e.items,function(b){var d=r(e.sty… | |
| -E(a,"destroy");S(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--… | |
| -U&&!K.canvg)U?Mb.push(function(){a.firstRender()},b.global.canvasToolsURL):C.a… | |
| -b.scrollbar.enabled))a.scroller=new Highcharts.Scroller(a);a.tracker=new qb(a,… | |
| -var Ta=function(){};Ta.prototype={init:function(a,b,c){var d=a.chart.counters;… | |
| -a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}else … | |
| -"graphic,tracker,dataLabel,group,connector,shadowGroup".split(","),b,c=6;c--;)… | |
| -a!==c)a.selected=!1,a.setState(""),a.firePointEvent("unselect")})})},onMouseOv… | |
| -c=b.tooltipOptions,d=a.match(/\{(series|point)\.[a-zA-Z]+\}/g),e=/[{\.}]/,f,g,… | |
| -return a},update:function(a,b,c){var d=this,e=d.series,f=d.graphic,g,h=e.data,… | |
| -0;f<h;f++)if(g[f]===c){g.splice(f,1);d.options.data.splice(f,1);d.xData.splice… | |
| -this.options).events,b;this.events=a;for(b in a)I(this,b,a[b]);this.hasImporte… | |
| -{x:b-e,y:c-e,width:2*e,height:2*e}:{}));else{if(a&&h)e=h.radius,j?j.attr({x:b-… | |
| -r(this,{name:b.name,state:"",pointAttr:{},visible:b.visible!==!1,selected:b.se… | |
| -(b+1)})},bindAxes:function(){var a=this,b=a.options,c=a.chart,d;a.isCartesian&… | |
| -e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else n(d,function(c,g){c… | |
| -!a.colorByPoint&&b[c.color++]||"gray";c.wrapColor(b.length)},getSymbol:functio… | |
| -0,a-4,"L",d,a-4]).attr(g).add(f)}if(c&&c.enabled)b=c.radius,this.legendSymbol=… | |
| -(e.shift(),i.shift(),j.shift(),l.shift()));this.getAttribs();this.isDirtyData=… | |
| -d=o(d.pointInterval,1);for(i=0;i<l;i++)e[i]=j,k[i]=a[i],j+=d;this.xIncrement=j… | |
| -f.isDirtyBox=!0;o(b,!0)&&f.redraw(!1)},remove:function(a,b){var c=this,d=c.cha… | |
| -i=a.min,k=a.max,b[d-1]<i||b[0]>k)b=[],c=[];else if(b[0]<i||b[d-1]>k){for(a=0;a… | |
| -f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[… | |
| -b=this.options,c=b.stacking,d=this.xAxis,e=d.categories,f=this.yAxis,g=this.po… | |
| -n*100/p:0),k.percentage=p?k.y*100/p:0,k.total=k.stackTotal=p,k.stackY=n;k.yBot… | |
| -null;n(this.segments||this.points,function(a){b=b.concat(a)});c&&c.reversed&&(… | |
| -cb(c,a):a).replace("{series.name}",this.name).replace("{series.color}",this.co… | |
| -this,c=b.chart,d=c.renderer,e;e=b.options.animation;var f=c.clipBox,g=c.invert… | |
| -e.duration)}},afterAnimate:function(){var a=this.chart,b=this.sharedClipKey,c=… | |
| -x||i.enabled,m=c.isInsidePlot(d,e,c.inverted),a&&e!==x&&!isNaN(e))if(a=g.point… | |
| -for(f in e)g=e[f],h[f]=o(a[g],b[f],c[f],d[f]);return h},getAttribs:function(){… | |
| -h.length;f--;){g=h[f];if((b=g.options&&g.options.marker||g.options)&&b.enabled… | |
| -this,b=a.chart,c=/AppleWebKit\/533/.test(Fa),d,e,f=a.data||[],g,h,i;E(a,"destr… | |
| -a);for(h in a)delete a[h]},drawDataLabels:function(){var a=this,b=a.options.da… | |
| -a.color,"black");if(j)j.attr({text:f}),l=!1;else if(t(f)){j={fill:b.background… | |
| -d=r({x:g?f.plotWidth-a:h,y:s(g?f.plotHeight-h:a),width:0,height:0},d);r(c,{wid… | |
| -c.push(d.plotX,a[e-1].plotY),c.push(d.plotX,d.plotY))});return c},getGraphPath… | |
| -invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.l… | |
| -this.chart,b,c=this.options,d=c.animation&&!!this.animate,e=this.visible?"visi… | |
| -(b.clip(a.clipRect),this.trackerGroup&&this.trackerGroup.clip(a.clipRect));d?t… | |
| -d=b.states,b=b.lineWidth,a=a||"";if(this.state!==a)this.state=a,d[a]&&d[a].ena… | |
| -if(g)g[i]();d&&c.legend.colorizeItem(this,a);this.isDirty=!0;this.options.stac… | |
| -e=d.length,f=a.chart,g=f.renderer,h=f.options.tooltip.snap,i=a.tracker,j=b.cur… | |
| -visibility:a.visible?"visible":"hidden",stroke:wb,fill:c?wb:R,"stroke-width":b… | |
| -a.length-1;d>=0;d--)d<a.length-1&&e.step&&c.push(a[d+1].plotX,a[d].yBottom),c.… | |
| -qa(this.color).setOpacity(b.fillOpacity||0.75).get()),zIndex:0}).add(this.grou… | |
| -k;i+=l;k+=l;i>a&&i>e?(i=y(a,e),k=2*e-i):i<a&&i<e&&(i=O(a,e),k=2*e-i);k>g&&k>e?… | |
| -borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,min… | |
| -a.chart;b.hasRendered&&n(b.series,function(b){if(b.type===a.type)b.isDirty=!0}… | |
| -g.closestPointRange||1),m=g*c.groupPadding,p=(g-2*m)/f,u=c.pointWidth,r=t(u)?(… | |
| -h;c.pointWidth=q;c.shapeType="rect";c.shapeArgs=f=b.renderer.Element.prototype… | |
| -"select":""]).add(a.group).shadow(b.shadow,null,b.stacking&&!b.borderRadius);e… | |
| -fill:wb,visibility:a.visible?"visible":"hidden"}).on(fa?"touchstart":"mouseove… | |
| -if(a.shapeArgs&&(d=A(a.shapeArgs),g&&(d={x:f.plotWidth-d.y-d.height,y:f.plotHe… | |
| -y:t(h)?g.getThreshold(h):g.translate(g.getExtremes().min,0,1,0,1)}),c.animate(… | |
| -pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}});za=ca(N,{typ… | |
| -function(b){a.onMouseOver();if(b.target._i!==x)c[b.target._i].onMouseOver()}).… | |
| -{init:function(){Ta.prototype.init.apply(this,arguments);var a=this,b;r(a,{vis… | |
| -!0,c.redraw()},slice:function(a,b,c){var d=this.series.chart,e=this.slicedTran… | |
| --xa/2;c&&(c.attr({r:0,start:d,end:d}),c.animate({r:b.r,start:b.start,end:b.end… | |
| -var a=0,b=-0.25,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g=this.cha… | |
| -end:i};j=(i+h)/2;q.slicedTranslation=Sa([V(j)*d+g.plotLeft,Y(j)*d+g.plotTop],s… | |
| -this.isDirty=!1},drawPoints:function(){var a=this,b=a.chart,c=b.renderer,d,e,f… | |
| -h);j.visible===!1&&j.setVisible(!1)})},drawDataLabels:function(){var a=this.da… | |
| -21);y--;){var x=[],A=[],z=r[y],C=z.length,B;if(j>0){for(v=m-l-j;v<=m+l+j;v+=a)… | |
| -s=h[1];if(j>0){if(q=A.pop(),B=q.i,q=q.y,s>q&&x[B+1]!==null||s<q&&x[B-1]!==null… | |
| -b.connector=g=this.chart.renderer.path(h).attr({"stroke-width":f,stroke:d.conn… | |
| -getOptions:function(){return M},hasBidiBug:Pb,numberFormat:Ia,seriesTypes:$,se… | |
| +canvasToolsURL:"http://code.highcharts.com/4.0.4/modules/canvas-tools.js",VMLR… | |
| +align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1… | |
| +marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,t… | |
| +width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,tit… | |
| +day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},he… | |
| +color:"#909090",fontSize:"9px"}}};var ca=E.plotOptions,T=ca.line;Bb();var Ub=/… | |
| +16),1]:(c=Wb.exec(a))&&(b=[y(c[1]),y(c[2]),y(c[3]),1])})(a);return{get:functio… | |
| +S.prototype={opacity:1,textProps:"fontSize,fontWeight,fontFamily,color,lineHei… | |
| +if(f){g=a[f];h=d.gradients;j=a.stops;n=c.radialReference;Ha(g)&&(a[f]=g={x1:g[… | |
| +0?(e=ya(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("sto… | |
| +f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[… | |
| +"";c.indexOf(a)===-1&&F(b,"class",c+" "+a);return this},symbolAttr:function(a)… | |
| +0)-2*d);a.height=U((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)… | |
| +for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";F(d,"style",g)}e&&this.adde… | |
| +translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();retu… | |
| +a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a… | |
| +h[b?"translateX":"x"]=v(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.heigh… | |
| +c.getBBox?r({},c.getBBox()):{width:c.offsetWidth,height:c.offsetHeight}}catch(… | |
| +hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){v… | |
| +b);h=!0;break}}h||d.appendChild(e);this.added=!0;if(this.onAdd)this.onAdd();re… | |
| +q(c,function(b){a.safeRemoveChild(b)});d&&d.div&&d.div.childNodes.length===0;)… | |
| +e,"stroke-width":h,transform:"translate"+k,fill:P});if(c)F(f,"height",t(F(f,"h… | |
| +/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleS… | |
| +alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",… | |
| +c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zInde… | |
| +b,c){this[b]=a;if(this.stroke&&this["stroke-width"])this.strokeWidth=this["str… | |
| +g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&F(g,"xmlns",xa… | |
| +if(Ua&&a.getBoundingClientRect)this.subPixelFix=b=function(){B(a,{left:0,top:0… | |
| +{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&X(G,"resi… | |
| +a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12,a).h};o… | |
| +f){var g,n=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||"… | |
| +j!==null)m.x=j;F(o,m);b.appendChild(o);!n&&f&&(!ba&&d&&B(o,{display:"block"}),… | |
| +x:j}),p&&F(o,"style",p),b.appendChild(o))),D>l&&(l=D)):(o.removeChild(o.firstC… | |
| +fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);o=f.style;delete f.s… | |
| +j.attr(e).css(m)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).cs… | |
| +a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(da(a))b=a.y,c=a.r,d=a.inner… | |
| +this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({widt… | |
| +b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(v(b),v(c),d,e,f),i=/^url\((.*?)\)$/,… | |
| +src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",… | |
| +0.001,d=e.innerR,h=e.open,i=aa(f),j=fa(f),k=aa(g),g=fa(g),e=e.end-f<oa?0:1;ret… | |
| +"L",a+c,i-6,a+c+6,i,a+c,i+6,a+c,b+d-f):h&&h<0&&i>b+g&&i<b+d-g?e.splice(33,3,"L… | |
| +b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.c… | |
| +parseFloat(a)*12:12,c=a<24?a+4:v(a*1.2),d=v(c*0.8);return{h:c,b:d,f:a}},label:… | |
| +z));z=null}}function k(){var a=m.styles,a=a&&a.textAlign,b=kb+C*(1-J),c;c=h?0:… | |
| +function(a){xb=a};m.paddingSetter=function(a){s(a)&&a!==C&&(C=a,k())};m.paddin… | |
| +a;J&&(a-=J*((t||D.width)+C));yb=v(a);m.attr("translateX",yb)};m.ySetter=functi… | |
| +S.prototype.destroy.call(m);m=n=j=k=l=null}})}};Za=ta;r(S.prototype,{htmlCss:f… | |
| +this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.… | |
| +h,k);i=p(this.elemWidth,b.offsetWidth);if(i>l&&/[ \-]/.test(b.textContent||b.i… | |
| +b*100+"% "+c+"px";B(this.element,d)},getSpanCorrection:function(a,b,c){this.xC… | |
| +fontSize:this.style.fontSize});d.css=d.htmlCss;if(f.isSVG)d.add=function(a){va… | |
| +b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdat… | |
| +c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.… | |
| +b,c,d,e){var f=d?aa(d*Ea):1,g=d?fa(d*Ea):0,h=p(this.elemHeight,this.element.of… | |
| +5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"… | |
| +G.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var … | |
| +f.style.cssText,'" />'];h=$(g.prepVML(j),null,{left:y(i.left)+p(a.offsetX,1),t… | |
| +$(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},… | |
| +this[b]=c[b]=a;c.left=-v(fa(a*Ea)+1)+"px";c.top=v(aa(a*Ea))+"px"},strokeSetter… | |
| +b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b===… | |
| +a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache… | |
| +clipRect:function(a,b,c,d){var e=this.createElement(),f=da(a);return r(e,{memb… | |
| +a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=… | |
| +ya(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);s.push(a[0]*100+"% "+k);b?(… | |
| +x+","+z+'" color2="'+J+'" ';u()};d.added?j():d.onAdd=j;j=D}else j=k}else if(g.… | |
| +a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')… | |
| +b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.a… | |
| +d,c=e.innerR,d=aa(f),i=fa(f),j=aa(g),k=fa(g);if(g-f===0)return["x"];f=["wa",a-… | |
| +arguments)};Z.prototype=w(ta.prototype,ia);Za=Z}ta.prototype.measureSpanWidth=… | |
| +this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,… | |
| +ea(ka(f)):f});g=d&&{width:t(1,v(d-2*(h.padding||10)))+"px"};if(s(e))e&&e.attr(… | |
| +this.label,b=this.axis;return a?a.getBBox()[b.horiz?"height":"width"]:0},getLa… | |
| +u||g+k>n[l]?n[l]=g+j:m||(c=!1);if(m){l=(n=d.justifyToPlot)?d.pos:0;n=n?l+d.len… | |
| +f.chartWidth)-e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0… | |
| +f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=… | |
| +D;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=o?f.path(j).attr(l).add(d.… | |
| +1)?r=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(r=this.handleOverflow(a… | |
| +m=a.svgElem,o=[],p,q=e.color,J=e.zIndex,C=e.events,r={},u=b.chart.renderer;b.i… | |
| +o.length&&(a.svgElem=m=u.path(o).attr(r).add(),C))for(p in d=function(b){m.on(… | |
| +!1,{x:o,y:c,width:Ca(b)-o,height:Ca(k)-c});g.show()}else g&&g.hide();return a}… | |
| +minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tic… | |
| +-1)},style:M.style}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rota… | |
| +this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabe… | |
| +{};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=t… | |
| +u)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBand… | |
| +e=E.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:… | |
| +d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a… | |
| +this.min,j=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.… | |
| +!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.t… | |
| +a)*a),g=[];if(b===c&&ja(b))return[b];for(b=e;b<=f;){g.push(b);b=ea(b+a);if(b==… | |
| +(b[0]-this.min)%c;b<=this.max;b+=c)d.push(b);return d},adjustForMinRange:funct… | |
| +if(e)d[2]=this.dataMin;b=Ca(d);c=[b+k,p(a.max,b+k)];if(e)c[2]=this.dataMax;c=O… | |
| +0:h/2);g=t(g,j==="on"?0:h);!a.noSharedTooltip&&s(m)&&(e=s(e)?L(e,m):m)}),h=b.o… | |
| +n=d.minPadding,m=d.tickInterval,o=d.minTickInterval,Y=d.tickPixelInterval,D,J=… | |
| +null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!J&&!b.axisPo… | |
| +b.linkedParent.tickInterval:(b.tickInterval=p(m,J?1:(b.max-b.min)*Y/t(b.len,Y)… | |
| +o;if(!h&&!g&&!m)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),p(d.a… | |
| +b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,!0):g?b.getLogTickP… | |
| +[this.coll,this.pos,this.len].join("-");if(!this.isLinked&&!this.isDatetimeAxi… | |
| +(e-1)/(a-1);this.max=b[b.length-1]}if(s(d)&&a!==d)this.isDirty=!0}},setScale:f… | |
| +!1;this.getSeriesExtremes();this.setTickPositions();this.oldUserMin=this.userM… | |
| +!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,e=th… | |
| +100*a.plotHeight);c.test(g)&&(g=parseInt(g,10)/100*a.plotHeight+a.plotTop);thi… | |
| +this.max;c>a||a===null?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLa… | |
| +!!e;a.showAxis=k=j||p(d.showEmpty,!0);a.staggerLines=a.horiz&&Y.staggerLines;i… | |
| +a.reversed?[].concat(e).reverse():e;v<w;){x=[];y=!1;for(r=0;r<j.length;r++)A=j… | |
| +0,0,o.useHTML).attr({zIndex:7,rotation:o.rotation||0,align:o.textAlign||{low:"… | |
| +l+C*a.offset,g);b[i]=t(b[i],U(d.lineWidth/2)*2)},getLinePath:function(a){var b… | |
| +12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:… | |
| +!isNaN(a.oldMin),r=a.hasData,t=a.showAxis,v,w=f.labels.overflow,x=a.justifyLab… | |
| +1?0:c+1);if(!h||b>=a.min&&b<=a.max)l[b]||(l[b]=new Ta(a,b)),C&&l[b].isNew&&l[b… | |
| +m],function(a){var b,c,e=[],f=va?va.duration||500:0,g=function(){for(c=e.lengt… | |
| +k.isNew=!1;o&&o.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function()… | |
| +this.cross&&this.cross.destroy()},drawCrosshair:function(a,b){if(this.crosshai… | |
| +"animate":"attr"]({d:c},e);else{e={"stroke-width":d.width||1,stroke:d.color||"… | |
| +"plotLines")},addPlotBandOrLine:function(a,b){var c=(new K.PlotLineOrBand(this… | |
| +c,d){var e=[],f={},g=E.global.useUTC,h,i=new Da(b-Sa),j=a.unitRange,k=a.count;… | |
| +i.getTime(),l=i[fb](),n=i[Xa](),m=(A.day+(g?Sa:i.getTimezoneOffset()*6E4))%A.d… | |
| +[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["mon… | |
| +b,c);else if(a>=0.08)for(var f=U(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,… | |
| +a;return g};var Nb=K.Tooltip=function(){this.init.apply(this,arguments)};Nb.pr… | |
| +destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(… | |
| +this,c;clearTimeout(this.hideTimer);if(!this.isHidden)c=this.chart.hoverPoints… | |
| +(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}),g/=a.length,h… | |
| +c;else if(b)f[a]=d;else return!1},l=function(a,b,c,d){if(d<e||d>b-e)return!1;e… | |
| +d.push(a.options.footerFormat||"");return d.join("")},refresh:function(a,b){va… | |
| +y:a[0].y},h.points=j,this.len=j.length,a=a[0]):h=a.getLabelConfig();i=i.call(h… | |
| +c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c… | |
| +e+"}"));return Ja(c,{point:a,series:b})}};var pa;$a=x.documentElement.ontouchs… | |
| +this.followTouchMove=b.tooltip.followTouchMove;this.setDOMEvents()},normalize:… | |
| +"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return… | |
| +c[j].singularTooltips!==!0&&c[j].tooltipPoints.length&&(e=c[j].tooltipPoints[l… | |
| +function(a){if(W[pa])W[pa].pointer.onDocumentMouseMove(a)},N(x,"mousemove",thi… | |
| +null;q(c.axes,function(a){a.hideCrosshair()});this.hoverX=null}},scaleGroups:f… | |
| +drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=th… | |
| +f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zInde… | |
| +e.x,g=e.attr?e.attr("y"):e.y,h=e.attr?e.attr("width"):e.width,i=e.attr?e.attr(… | |
| +{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDra… | |
| +this.reset()},onContainerMouseLeave:function(){var a=W[pa];if(a)a.pointer.rese… | |
| +-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.ho… | |
| +a)):(r(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&I(b,"c… | |
| +N(x,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;X(this.chart.co… | |
| +b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,n=a?"width… | |
| +"scaleX":"scale"+k]=q;d["translate"+k]=f*m+(v-f*s)},pinch:function(a){var b=th… | |
| +d[1]&&d[1].chartY],q(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.hor… | |
| +this.chart;pa=b.index;a.touches.length===1?(a=this.normalize(a),b.isInsidePlot… | |
| +b.push({pageX:ua[a].pageX,pageY:ua[a].pageY,target:ua[a].target});return b},Ab… | |
| +"onContainerTouchMove","touchmove",function(a){ua[a.pointerId]={pageX:a.pageX,… | |
| +Na(Wa.prototype,"init",function(a,b,c){a.call(this,b,c);(this.hasZoom||this.fo… | |
| +if(b.enabled)c.itemStyle=d,c.itemHiddenStyle=w(d,b.itemHiddenStyle),c.itemMarg… | |
| +a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h})… | |
| +(a[b]=a[b].destroy())});b&&Qa(a.checkbox)},destroy:function(){var a=this.group… | |
| +this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-titl… | |
| +o=this.itemMarginTop,q=this.initialItemX,r=a.legendItem,s=a.series&&a.series.d… | |
| +r).f+3+o,r.attr("y",this.baseline);s.drawLegendSymbol(this,a);this.setItemEven… | |
| +m;this.lastLineHeight=t(g,this.lastLineHeight);a._legendItemPos=[this.itemX,th… | |
| +l=j.borderWidth,n=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialIt… | |
| +h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);if(l||n){g+… | |
| +this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.v… | |
| +e=m.length;if(!e||c-m[e-1]>h&&(o||c)!==m[e-1])m.push(o||c),e++;b===r.length-1&… | |
| +a=f}else if(n)i.attr({height:c.chartHeight}),n.hide(),this.scrollGroup.attr({t… | |
| +i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e=… | |
| +this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.leg… | |
| +b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});… | |
| +function(){f.initReflow()});if(e)for(g in e)N(f,g,e[g]);f.xAxis=[];f.yAxis=[];… | |
| +this.maxTicks=null},redraw:function(a){var b=this.axes,c=this.series,d=this.po… | |
| +this.isDirtyLegend=!1;g&&this.getStacks();if(i){if(!this.isResizing)this.maxTi… | |
| +"redraw");m&&this.cloneRenderTo(!0);q(o,function(a){a.call()})},get:function(a… | |
| +c=c.concat(b);q(c,function(b){new na(a,b)});a.adjustTickAmounts()},getSelected… | |
| +b.type+p(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.… | |
| +e=e.subtitle,g=this.renderer,h=this.spacingBox.width-44;if(c&&(c.css({width:(f… | |
| +p(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.op… | |
| +c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=… | |
| +W[c].destroy();F(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipC… | |
| +b.forExport?new ta(a,c,d,b.style,!0):new Za(a,c,d,b.style);ga&&this.renderer.c… | |
| +"left"){if(!s(d[3]))this.plotLeft=t(this.plotLeft,c.legendWidth+g+f+a[3])}else… | |
| +s(d[2])||(this.marginBottom+=b[2]);s(d[1])||(this.marginRight+=b[1]);this.setC… | |
| +this,b=function(b){a.reflow(b)};N(G,"resize",b);N(a,"destroy",function(){X(G,"… | |
| +!0;a.setScale()});q(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.i… | |
| +l=t(0,v(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this… | |
| +this.spacing,b=this.margin;this.plotTop=p(b[0],a[0]);this.marginRight=p(b[1],a… | |
| +p=this.plotTop,q=this.plotWidth,r=this.plotHeight,t=this.plotBox,s=this.clipRe… | |
| +b.image(l,o,p,q,r).add();s?s.animate({width:v.width,height:v.height}):this.cli… | |
| +e--;)(c=H[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){… | |
| +c.style),e=y(d.left)+a.plotLeft,f=y(d.top)+a.plotTop+12;delete d.left;delete d… | |
| +if(!this.seriesGroup)this.seriesGroup=b.g("series-group").attr({zIndex:3}).add… | |
| +u;ab--;a.renderTo.removeAttribute("data-highcharts-chart");X(a);for(e=b.length… | |
| +x.readyState!=="complete"||ga&&!G.canvg?(ga?Mb.push(function(){a.firstRender()… | |
| +"beforeRender");if(K.Pointer)a.pointer=new Wa(a,b);a.render();a.renderer.draw(… | |
| +a=[p(b[0],"50%"),p(b[1],"50%"),a.size||"100%",a.innerSize||0],g=L(e,f),h;retur… | |
| +b){var c=this.series,d=c.options.pointValKey||c.pointValKey,a=Fa.prototype.opt… | |
| +a[f++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;i… | |
| +b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:functio… | |
| +{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=… | |
| +"yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this… | |
| +q(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCa… | |
| +updateParallelArrays:function(a,b){var c=a.series,d=arguments;q(c.parallelArra… | |
| +e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.sp… | |
| +d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;return c},get… | |
| +0},drawLegendSymbol:M.drawLineMarker,setData:function(a,b,c,d){var e=this,f=e.… | |
| +0});if(o&&h>o){for(c=0;k===null&&c<h;)k=a[c],c++;if(ja(k)){n=p(i.pointStart,0)… | |
| +f[c].destroy&&f[c].destroy();if(m)m.length=0;if(l)l.minRange=l.userMinRange;e.… | |
| +this.cropData(this.xData,this.yData,m,n),b=e.xData,c=e.yData,e=e.start,f=!0,k=… | |
| +e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),star… | |
| +j))for(n=0;n<c;n++)if(n===h&&!j&&(n+=g),b[n])b[n].destroyElements(),b[n].plotX… | |
| +k;this.dataMin=p(void 0,Oa(e));this.dataMax=p(void 0,Ca(e))},translate:functio… | |
| +"flags");if(b&&this.visible&&q&&q[n])q=q[n],m=q.points[this.index+","+a],o=m[0… | |
| +animate:function(a){var b=this.chart,c=b.renderer,d;d=this.options.animation;v… | |
| +99},d),this.animate=null)},afterAnimate:function(){var a=this.chart,b=this.sha… | |
| +!this.requireSorting||this.activePointCount<0.5*this.xAxis.len/l.radius);if(l.… | |
| +(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h,o?m:l).attr(a).add(t)}e… | |
| +c.lineColor,o=c.fillColor;i=b.turboThreshold;var p;b.marker?(e.radius=e.radius… | |
| +i.color;if(i.options)for(p in l)s(c[l[p]])&&(k=!0);if(k){c=c||{};k=[];d=c.stat… | |
| +d,e,f=a.data||[],g,h,i;I(a,"destroy");X(a);q(a.axisTypes||[],function(b){if(i=… | |
| +getSegmentPath:function(a){var b=this,c=[],d=b.options.step;q(a,function(e,f){… | |
| +b},drawGraph:function(){var a=this,b=this.options,c=[["graph",b.lineColor||thi… | |
| +this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,… | |
| +(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.cli… | |
| +f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"att… | |
| +c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup",… | |
| +setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirt… | |
| +render:function(a){var b=this.options,c=b.format,c=c?Ja(c,this):b.formatter.ca… | |
| +f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.lab… | |
| +this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.st… | |
| +i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,n=k.oldStacks,m,o,p,q,r,s;for… | |
| +c[q]=o.cum}if(e==="percent")k.usePercentage=!0;this.stackedYData=c;k.oldStacks… | |
| +e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function… | |
| +b.container),b.loadingSpan=$("span",null,e.labelStyle,d),N(b,"redraw",f);b.loa… | |
| +!Ha(a))f.redraw=function(){if(h)a&&a.marker&&a.marker.symbol?f.graphic=h.destr… | |
| +{options:a},e)},remove:function(a,b){var c=this,d=c.series,e=d.points,f=d.char… | |
| +n,m=this.xData;Ra(d,i);c&&q([g,h,this.graphNeg,this.areaNeg],function(a){if(a)… | |
| +(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));this.isDirtyData=t… | |
| +a=w(e,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.opti… | |
| +this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);la(… | |
| +h={},i,j,k=this.points,l=this.options.connectNulls,n,m;if(this.options.stackin… | |
| +b=this.segments;this.segments=b},getSegmentPath:function(a){var b=O.prototype.… | |
| +c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];O.prototype.drawGra… | |
| +getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j… | |
| +ia;ca.areaspline=w(ca.area);qa=qa.prototype;ia=ma(ia,{type:"areaspline",closed… | |
| +verticalAlign:null,y:null},stickyTracking:!1,tooltip:{distance:6},threshold:0}… | |
| +!1?i=1:q(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.ty… | |
| +(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWid… | |
| +q=c.plotX+k,r=j,s=L(h,d),u;u=t(h,d)-s;Q(u)<g&&g&&(u=g,s=v(Q(s-f)>g?d-g:f-(e.tr… | |
| +f,g;q(a.points,function(h){var i=h.plotY,j=h.graphic;if(i!==u&&!isNaN(i)&&h.y!… | |
| +0.001,a=L(b.pos+b.len,t(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len… | |
| +pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"},stickyTracking… | |
| +ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,… | |
| +d=c.chart;b.visible=b.options.visible=a=a===u?!b.visible:a;c.options.data[Ma(b… | |
| +translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.anima… | |
| +getColor:sa,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)… | |
| +c=this.points;d=c.length;for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?0:e.y;this.to… | |
| +V.asin(L((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*aa(h)*(a[2]/2+l)};for(n=… | |
| +l,a[1]+g+fa(h)*l,a[0]+f+aa(h)*e,a[1]+g+fa(h)*e,a[0]+f,a[1]+g,l<0?"center":o.ha… | |
| +"select":""]).attr({"stroke-linejoin":"round"}).attr(c).add(a.group).shadow(e,… | |
| +j=a.plotGroup("dataLabelsGroup","data-labels",d.defer?"hidden":"visible",d.zIn… | |
| +p(d.color,d.style.color,a.color,"black");if(h)if(s(i))h.attr({text:i}),t=!1;el… | |
| +O.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h… | |
| +"justify"?this.justifyDataLabel(b,c,g,j,d,e):p(c.crop,!0)&&(a=f.isInsidePlot(g… | |
| +b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;if(k)a.placed=!f,a.align(b,nu… | |
| +function(a){a.dataLabel&&a.visible&&A[a.half].push(a)});for(H=2;H--;){var G=[]… | |
| +E=P);if(E<z&&G[z]!==null)E=z;else for(w<K-z+E&&G[z]!==null&&(E=w-K+z);G[E]===n… | |
| +B;if(this.options.size===null)w=u.width,y-w<f?R[3]=t(v(w-y+f),R[3]):y+w>h-f&&(… | |
| +"L",x[4],x[5]],j?(j.animate({d:k}),j.attr("visibility",I)):b.connector=j=a.cha… | |
| +function(a){var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;d[… | |
| +h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>p(this.translatedThreshold,f.plotSiz… | |
| +this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(c){va… | |
| +f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b… | |
| +k[n],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tr… | |
| +T.drawTrackerPoint;if(H.scatter)qa.prototype.drawTracker=T.drawTrackerPoint;r(… | |
| +$("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.… | |
| +d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().alig… | |
| +da(e))this.resetZoomButton=e.destroy();b&&this.redraw(p(this.options.chart.ani… | |
| +i,!1,!1,{trigger:"pan"}),e=!0);c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(… | |
| +a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=… | |
| +this.options).events,b;this.events=a;for(b in a)N(this,b,a[b]);this.hasImporte… | |
| +l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&o.r,t… | |
| +m.attr(r({fill:ya(this.color||e.color).setOpacity(c.opacity).get()},c.attribut… | |
| +I(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:func… | |
| +0)),c&&!c.dashstyle&&(a={"stroke-width":b},c.attr(a),d&&d.attr(a)))},setVisibl… | |
| +function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();I(c,f… | |
| +c<=f.max){h=b[i+1];c=d===u?0:d+1;for(d=b[i+1]?L(t(0,U((e.clientX+(h?h.wrappedC… | |
| +charts:W,dateFormat:cb,format:Ja,pathAnim:vb,getOptions:function(){return E},h… | |
| diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/ap… | |
| @@ -1,7 +0,0 @@ | |
| -/* | |
| - * This is a manifest file that'll automatically include all the stylesheets a… | |
| - * and any sub-directories. You're free to add application-wide styles to this… | |
| - * the top of the compiled file, but it's generally better to create a new fil… | |
| - *= require_self | |
| - *= require_tree . | |
| -*/ | |
| diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/style… | |
| @@ -1,16 +1,16 @@ | |
| /* | |
| - *= require bootstrap_and_overrides | |
| - */ | |
| - | |
| -/* | |
| *= require_self | |
| *= require formtastic | |
| *= require formtastic-bootstrap | |
| *= require formtastic-overrides | |
| *= require bootstrap-lightbox | |
| - *= require dataTables/jquery.dataTables.bootstrap | |
| + *= require jquery.dataTables | |
| + *= require font-awesome | |
| */ | |
| +@import "bootstrap-sprockets"; | |
| +@import "bootstrap"; | |
| + | |
| table.list { | |
| td.actions { | |
| @@ -76,3 +76,541 @@ table.list { | |
| margin-left: auto; | |
| margin-right: auto; | |
| } | |
| + | |
| + | |
| +#main { | |
| + margin-top: 50px; | |
| +} | |
| + | |
| +// Overrides | |
| + | |
| +/* navbar */ | |
| + | |
| +.navbar-default { | |
| + background-color: #ea5709; | |
| + border-color: red; | |
| +} | |
| +/* title */ | |
| +.navbar-default .navbar-brand { | |
| + color: #ffffff; | |
| +} | |
| +.navbar-default .navbar-brand:hover, | |
| +.navbar-default .navbar-brand:focus { | |
| + color: yellow; | |
| + background-color: #ea5709; | |
| +} | |
| +/* link */ | |
| +.navbar-default .navbar-nav > li > a { | |
| + color: white; | |
| + background-color: #ea5709; | |
| +} | |
| +.navbar-default .navbar-nav > li > a:hover, | |
| +.navbar-default .navbar-nav > li > a:focus { | |
| + color: yellow; | |
| + background-color: #ea5709; | |
| +} | |
| +.navbar-default .navbar-nav > .active > a, | |
| +.navbar-default .navbar-nav > .active > a:hover, | |
| +.navbar-default .navbar-nav > .active > a:focus { | |
| + color: yellow; | |
| + background-color: #ea5709; | |
| +} | |
| +.navbar-default .navbar-nav > .open > a, | |
| +.navbar-default .navbar-nav > .open > a:hover, | |
| +.navbar-default .navbar-nav > .open > a:focus { | |
| + color: yellow; | |
| + background-color: #ea5709; | |
| +} | |
| +/* caret */ | |
| +.navbar-default .navbar-nav > .dropdown > a .caret { | |
| + border-top-color: white; | |
| + border-bottom-color: white; | |
| +} | |
| +.navbar-default .navbar-nav > .dropdown > a:hover .caret, | |
| +.navbar-default .navbar-nav > .dropdown > a:focus .caret { | |
| + border-top-color: #333; | |
| + border-bottom-color: #333; | |
| +} | |
| +.navbar-default .navbar-nav > .open > a .caret, | |
| +.navbar-default .navbar-nav > .open > a:hover .caret, | |
| +.navbar-default .navbar-nav > .open > a:focus .caret { | |
| + border-top-color: #555; | |
| + border-bottom-color: #555; | |
| +} | |
| +/* mobile version */ | |
| +.navbar-default .navbar-toggle { | |
| + border-color: #DDD; | |
| +} | |
| +.navbar-default .navbar-toggle:hover, | |
| +.navbar-default .navbar-toggle:focus { | |
| + | |
| +} | |
| +.navbar-default .navbar-toggle .icon-bar { | |
| + background-color: #ea5709; | |
| +} | |
| +@media (max-width: 767px) { | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a { | |
| + color: white; | |
| + background-color: #ea5709; | |
| + } | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { | |
| + color: yellow; | |
| + } | |
| +} | |
| + | |
| +// | |
| + | |
| +a .project-title, a:visited .project-title { | |
| + color: white; | |
| + font-weight: bold; | |
| +} | |
| + | |
| + | |
| +// Datatables | |
| + | |
| +.paginate_disabled_previous { | |
| + display: none; | |
| +} | |
| + | |
| +.paginate_disabled_next { | |
| + display: none; | |
| +} | |
| + | |
| +.paginate_enabled_previous { | |
| + color: red; | |
| + margin-right: 20px; | |
| +} | |
| + | |
| +.paginate_enabled_next { | |
| + color: green; | |
| +} | |
| + | |
| +// End of DataTables | |
| + | |
| + | |
| +.sparkline { | |
| + width: 100%; | |
| + height: 30px; | |
| +} | |
| + | |
| +.sparkline-title { | |
| + text-align: center; | |
| + font-size: 11px; | |
| +} | |
| + | |
| +.call-detail { | |
| + font-size: 10px; | |
| +} | |
| + | |
| +.project-header { | |
| + margin-bottom: 30px; | |
| + border-bottom: 1px solid #eeeeee; | |
| +} | |
| + | |
| +.zoom { | |
| + background-color: yellow; | |
| + height: 40px; | |
| +} | |
| + | |
| + | |
| +.stat-box { | |
| + padding: 10px; | |
| + background-color: white; | |
| + border: 2px solid #29383f; | |
| + font-size: 16px; | |
| + font-weight: bold; | |
| + color: #29383f; | |
| + width: 100px; | |
| + margin: auto auto; | |
| + text-align: center; | |
| + | |
| + border-top-left-radius: 20px; | |
| + border-top-right-radius: 20px; | |
| + border-bottom-right-radius: 20px; | |
| + border-bottom-left-radius: 20px; | |
| +} | |
| + | |
| +.stat-modem { | |
| + background-color: white; | |
| + border: 2px solid red; | |
| + color: red; | |
| +} | |
| + | |
| + | |
| +.stat-nodata { | |
| + background-color: #f4f4f4; | |
| + border: 2px solid #29383f; | |
| + color: #29383f; | |
| + font-size: 24px; | |
| +} | |
| + | |
| +.stat-completed { | |
| + background-color: white; | |
| + border: 2px solid #ea5709; | |
| + color: #29383f; | |
| +} | |
| + | |
| +.stat-voice { | |
| + background-color: white; | |
| + border: 2px solid green; | |
| + color: #29383f; | |
| +} | |
| + | |
| +.stat-voicemail { | |
| + background-color: white; | |
| + border: 2px solid blue; | |
| + color: #29383f; | |
| +} | |
| + | |
| +.stat-fax { | |
| + background-color: white; | |
| + border: 2px solid #29383f; | |
| + color: #29383f; | |
| +} | |
| + | |
| +.stat-modem { | |
| + background-color: white; | |
| + border: 2px solid red; | |
| + color: #29383f; | |
| +} | |
| + | |
| + | |
| +.arrow-down { | |
| + font-size: 18px; | |
| + text-align: center; | |
| + margin: auto auto; | |
| + padding-top: 10px; | |
| + padding-bottom: 10px; | |
| + color: #ea5709; | |
| +} | |
| + | |
| +.arrow-right { | |
| + font-size: 22px; | |
| + text-align: center; | |
| + margin: auto auto; | |
| + padding-top: 10px; | |
| + padding-bottom: 10px; | |
| +} | |
| + | |
| +.stat-subtitle { | |
| + text-align: center; | |
| + font-size: 12px; | |
| + margin-top: 1px; | |
| +} | |
| + | |
| +.fwd_match_span { | |
| + width: 150px; | |
| + padding-left: 20px; | |
| + padding-right: 20px; | |
| + padding-bottom: 5px; | |
| + padding-top: 5px; | |
| + font-weight: bold; | |
| + color: white; | |
| + text-align: center; | |
| +} | |
| + | |
| +.filter-label { | |
| + line-height: 16px; | |
| + font-size: 16px; | |
| + margin-right: 5px; | |
| + padding-top: 5px; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +.filter-select { | |
| + line-height: 14px; | |
| + font-size: 14px; | |
| + width: 120px; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +.popover-title { | |
| + line-height: 12px; | |
| + font-size: 12px; | |
| + text-align: center; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +.popover-content { | |
| + | |
| +} | |
| + | |
| +.xtooltip { | |
| + border-bottom: 1px dotted blue; | |
| + cursor: help; | |
| +} | |
| + | |
| +.xpopover { | |
| + border-bottom: 1px dotted blue; | |
| + cursor: help; | |
| +} | |
| + | |
| +.progress-bar { | |
| + margin-bottom: -2px; | |
| +} | |
| + | |
| +.progress_pct { | |
| + color: #29383f; | |
| + margin-left: 10px; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +.task_args_formatted { | |
| + padding:10px; | |
| +} | |
| + | |
| +.task_args_var { | |
| + font-size: 12px; | |
| + float: left; | |
| + font-weight: bold; | |
| + text-align: right; | |
| +} | |
| +.task_args_val { | |
| + font-size: 14px; | |
| + text-align: left; | |
| + padding-left: 5px; | |
| + float: auto; | |
| +} | |
| +.check-item { | |
| + font-size: 18px; | |
| + margin-bottom: 10px; | |
| +} | |
| +.check-result { | |
| + margin-left: 40px; | |
| + width: 500px; | |
| + font-size: 16px; | |
| +} | |
| + | |
| + | |
| +// Hacks to override active drop-down item background color and hover | |
| +.dropdown-menu .active > a { | |
| + background-color: white; | |
| + background-image: none; | |
| + color: #29383f; | |
| +} | |
| + | |
| +// Do not make active icons white | |
| +.dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a … | |
| + color: #29383f; | |
| + background-image: url("/assets/twitter/bootstrap/glyphicons-halflings.png"); | |
| +} | |
| + | |
| +.dropdown-menu .active > a:hover { | |
| + background-color: #ea5709; | |
| + background-image: none; | |
| + color: white; | |
| +} | |
| + | |
| +.fconstrained { | |
| + width: 400px; | |
| +} | |
| + | |
| + | |
| +.project_description { | |
| + height: 100px; | |
| + padding: 5px; | |
| +} | |
| +.project_includes { | |
| + height: 100px; | |
| + padding: 5px; | |
| +} | |
| + | |
| +body#login { | |
| + | |
| +background-color: black; | |
| +padding: 0; | |
| +margin: 0; | |
| + | |
| +} | |
| + | |
| +#login-panel { | |
| + | |
| +margin: 0px; | |
| +width: 100%; | |
| +padding: 0; | |
| +height: 300px; | |
| + | |
| +position: fixed; | |
| +z-index: 1; | |
| + | |
| +/* IE10 Consumer Preview */ | |
| +background-image: -ms-linear-gradient(top, #EA5709 0%, #000000 100%); | |
| + | |
| +/* Mozilla Firefox */ | |
| +background-image: -moz-linear-gradient(top, #EA5709 0%, #000000 100%); | |
| + | |
| +/* Opera */ | |
| +background-image: -o-linear-gradient(top, #EA5709 0%, #000000 100%); | |
| + | |
| +/* Webkit (Safari/Chrome 10) */ | |
| +background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0… | |
| + | |
| +/* Webkit (Chrome 11+) */ | |
| +background-image: -webkit-linear-gradient(top, #EA5709 0%, #000000 100%); | |
| + | |
| +/* W3C Markup, IE10 Release Preview */ | |
| +background-image: linear-gradient(to bottom, #EA5709 0%, #000000 100%); | |
| + | |
| +} | |
| + | |
| +#login-logo { | |
| + margin-left: auto; | |
| + margin-right: auto; | |
| + width: 222px; | |
| + height: 68px; | |
| + margin-top: 60px; | |
| +} | |
| + | |
| +#box { | |
| + margin-left: auto; | |
| + margin-right: auto; | |
| + width: 350px; | |
| + background: white; | |
| + padding: 25px; | |
| + margin-top: 20px; | |
| + border: 1px solid #4A1C04; | |
| + margin-bottom: 30px; | |
| + border-radius: 15px; | |
| +} | |
| + | |
| +.login-label { | |
| + width: 120px; | |
| + margin-right: 10px; | |
| + margin-bottom: 5px; | |
| + text-align: right; | |
| + font-weight: bold; | |
| + float: left; | |
| +} | |
| + | |
| +div.login-label h3 { | |
| + text-align: left; | |
| + font-size: 12px; | |
| + font-weight: bold; | |
| +} | |
| + | |
| +div.login-label input { | |
| + float: right; | |
| +} | |
| + | |
| +#user_session_login { | |
| + width: 300px; | |
| +} | |
| + | |
| +#user_session_password { | |
| + width: 300px; | |
| +} | |
| + | |
| +.btn-login { | |
| + margin-left: 110px; | |
| + margin-top: 20px; | |
| +} | |
| + | |
| +.alert { | |
| + background: #FFFEDE; | |
| + border: 1px solid red; | |
| + color: red; | |
| + font-weight: bold; | |
| + text-align: center; | |
| +} | |
| + | |
| +.nav { | |
| + a { | |
| + font-size: 15px; | |
| + } | |
| +} | |
| + | |
| +.content { | |
| + margin-top: 80px; | |
| +} | |
| + | |
| +.accordion-toggle:hover { | |
| + text-decoration: none; | |
| +} | |
| + | |
| +h1 { | |
| + font-size: 24px; | |
| + line-height: 30px; | |
| +} | |
| + | |
| +h2 { | |
| + font-size: 20px; | |
| + line-height: 24px; | |
| +} | |
| + | |
| +h3 { | |
| + font-size: 16px; | |
| + line-height: 18px; | |
| +} | |
| + | |
| +.header { | |
| + border-top: solid 4px #ea5709; | |
| + padding-top: 20px; | |
| +} | |
| + | |
| +.header a { | |
| + color: #ccc; | |
| +} | |
| + | |
| +.header a:hover { | |
| + text-decoration: none; | |
| + color: #ea5709; | |
| +} | |
| + | |
| +.footer { | |
| + text-align: center; | |
| + font-size: 12px; | |
| + margin-top: 50px; | |
| + color: #aaa; | |
| +} | |
| + | |
| +.no-space { | |
| + margin-left: 0; | |
| + margin-right: 0; | |
| +} | |
| + | |
| +.right { | |
| + text-align: right; | |
| +} | |
| + | |
| +.tabs-left { | |
| + text-align: left; | |
| +} | |
| + | |
| +.text-large { | |
| + font-size: 18px; | |
| +} | |
| + | |
| +h3.toc { | |
| + border-bottom: 1px solid #ccc; | |
| +} | |
| + | |
| +.carousel .item { | |
| + height: 50px; | |
| + text-align: center; | |
| +} | |
| + | |
| +.carousel .item > img { | |
| + display: inline; | |
| +} | |
| + | |
| +.lead-box h3 { | |
| + text-align: center; | |
| +} | |
| + | |
| +.lead-box p { | |
| + height: 80px; | |
| +} | |
| + | |
| +.table td { | |
| + vertical-align: middle; | |
| +} | |
| +table.dataTable tr td.sorting_1 { | |
| + background-color: #fff !important; | |
| +} | |
| +.tab-content { | |
| + overflow: hidden; | |
| +} | |
| +.carousel-control { | |
| + background: #fff; | |
| +} | |
| diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css b/app/assets/st… | |
| diff --git a/app/assets/stylesheets/bootstrap_and_overrides.css.less b/app/asse… | |
| @@ -1,36 +1,23 @@ | |
| @import "twitter/bootstrap/bootstrap"; | |
| -@import "twitter/bootstrap/responsive"; | |
| // Set the correct sprite paths | |
| -@iconSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings"); | |
| -@iconWhiteSpritePath: asset-path("twitter/bootstrap/glyphicons-halflings-white… | |
| +@iconSpritePath: image-url("/assets/glyphicons-halflings.png"); | |
| +@iconWhiteSpritePath: image-url("/assets/glyphicons-halflings-white.png"); | |
| // Set the Font Awesome (Font Awesome is default. You can disable by commentin… | |
| -// Note: If you use asset_path() here, your compiled bootstrap_and_overrides.c… | |
| -// have the proper paths. So for now we use the absolute path. | |
| -@fontAwesomeEotPath: asset-path("fontawesome-webfont.eot"); | |
| -@fontAwesomeEotPath_iefix: asset-path("fontawesome-webfont.eot#iefix"); | |
| -@fontAwesomeWoffPath: asset-path("fontawesome-webfont.woff"); | |
| -@fontAwesomeTtfPath: asset-path("fontawesome-webfont.ttf"); | |
| -@fontAwesomeSvgPath: asset-path("fontawesome-webfont.svg"); | |
| +@fontAwesomeEotPath: font-url("/assets/fontawesome-webfont.eot"); | |
| +@fontAwesomeEotPath_iefix: font-url("/assets/fontawesome-webfont.eot?#iefix"); | |
| +@fontAwesomeWoffPath: font-url("/assets/fontawesome-webfont.woff"); | |
| +@fontAwesomeTtfPath: font-url("/assets/fontawesome-webfont.ttf"); | |
| +@fontAwesomeSvgPath: font-url("/assets/fontawesome-webfont.svg#fontawesomeregu… | |
| // Font Awesome | |
| -@import "fontawesome"; | |
| +@import "fontawesome/font-awesome"; | |
| // Glyphicons | |
| -//@import "twitter/bootstrap/sprites.less"; | |
| +//@import "twitter/bootstrap/glyphicons.less"; | |
| // Your custom LESS stylesheets goes here | |
| -// | |
| -// Since bootstrap was imported above you have access to its mixins which | |
| -// you may use and inherit here | |
| -// | |
| -// If you'd like to override bootstrap's own variables, you can do so here as … | |
| -// See http://twitter.github.com/bootstrap/customize.html#variables for their … | |
| -// | |
| -// Example: | |
| -// @linkColor: #ff0000; | |
| - | |
| @sansFontFamily: "Trebuchet MS", Arial, Helvetica, sans-serif; | |
| @green: #90d552; | |
| @@ -38,6 +25,9 @@ | |
| @darkGray: #29383f; | |
| @lightGray: #666666; | |
| @blue: #0197b8; | |
| +@white: #ffffff; | |
| +@yellow: yellow; | |
| +@red: red; | |
| @darkOrange: #BB4607; | |
| @lightOrange: #F8ECE6; | |
| @@ -60,172 +50,252 @@ | |
| @headingsColor: @darkGray; | |
| @navbarBackground: #ea5709; | |
| +@navbarBorderColor: red; | |
| @navbarBackgroundHighlight: #4A1C04; | |
| +// Overrides | |
| + | |
| +/* navbar */ | |
| +.navbar-default { | |
| + background-color: @navbarBackground; | |
| + border-color: @navbarBorderColor; | |
| +} | |
| +/* title */ | |
| +.navbar-default .navbar-brand { | |
| + color: #ffffff; | |
| +} | |
| +.navbar-default .navbar-brand:hover, | |
| +.navbar-default .navbar-brand:focus { | |
| + color: #5E5E5E; | |
| +} | |
| +/* link */ | |
| +.navbar-default .navbar-nav > li > a { | |
| + color: #777; | |
| +} | |
| +.navbar-default .navbar-nav > li > a:hover, | |
| +.navbar-default .navbar-nav > li > a:focus { | |
| + color: #333; | |
| +} | |
| +.navbar-default .navbar-nav > .active > a, | |
| +.navbar-default .navbar-nav > .active > a:hover, | |
| +.navbar-default .navbar-nav > .active > a:focus { | |
| + color: #555; | |
| + background-color: @navbarBackground; | |
| +} | |
| +.navbar-default .navbar-nav > .open > a, | |
| +.navbar-default .navbar-nav > .open > a:hover, | |
| +.navbar-default .navbar-nav > .open > a:focus { | |
| + color: #555; | |
| + background-color: #D5D5D5; | |
| +} | |
| +/* caret */ | |
| +.navbar-default .navbar-nav > .dropdown > a .caret { | |
| + border-top-color: #777; | |
| + border-bottom-color: #777; | |
| +} | |
| +.navbar-default .navbar-nav > .dropdown > a:hover .caret, | |
| +.navbar-default .navbar-nav > .dropdown > a:focus .caret { | |
| + border-top-color: #333; | |
| + border-bottom-color: #333; | |
| +} | |
| +.navbar-default .navbar-nav > .open > a .caret, | |
| +.navbar-default .navbar-nav > .open > a:hover .caret, | |
| +.navbar-default .navbar-nav > .open > a:focus .caret { | |
| + border-top-color: #555; | |
| + border-bottom-color: #555; | |
| +} | |
| +/* mobile version */ | |
| +.navbar-default .navbar-toggle { | |
| + border-color: #DDD; | |
| +} | |
| +.navbar-default .navbar-toggle:hover, | |
| +.navbar-default .navbar-toggle:focus { | |
| + background-color: #DDD; | |
| +} | |
| +.navbar-default .navbar-toggle .icon-bar { | |
| + background-color: @navbarBackground; | |
| +} | |
| +@media (max-width: 767px) { | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a { | |
| + color: white; | |
| + } | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, | |
| + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { | |
| + color: @yellow; | |
| + } | |
| +} | |
| + | |
| +// | |
| + | |
| +a .project-title, a:visited .project-title { | |
| + color: white; | |
| + font-weight: bold; | |
| +} | |
| + | |
| // Datatables | |
| .paginate_disabled_previous { | |
| - display: none; | |
| + display: none; | |
| } | |
| .paginate_disabled_next { | |
| - display: none; | |
| + display: none; | |
| } | |
| .paginate_enabled_previous { | |
| - color: red; | |
| - margin-right: 20px; | |
| + color: red; | |
| + margin-right: 20px; | |
| } | |
| .paginate_enabled_next { | |
| - color: green; | |
| + color: green; | |
| } | |
| // End of DataTables | |
| .sparkline { | |
| - width: 100%; | |
| - height: 30px; | |
| + width: 100%; | |
| + height: 30px; | |
| } | |
| .sparkline-title { | |
| - text-align: center; | |
| - font-size: 11px; | |
| + text-align: center; | |
| + font-size: 11px; | |
| } | |
| .call-detail { | |
| - font-size: 10px; | |
| + font-size: 10px; | |
| } | |
| .project-header { | |
| - margin-bottom: 30px; | |
| - border-bottom: 1px solid #eeeeee; | |
| + margin-bottom: 30px; | |
| + border-bottom: 1px solid #eeeeee; | |
| } | |
| .zoom { | |
| - background-color: @orange; | |
| - height: 40px; | |
| + background-color: @orange; | |
| + height: 40px; | |
| } | |
| .stat-box { | |
| - padding: 10px; | |
| - background-color: white; | |
| - border: 2px solid @darkGray; | |
| - font-size: 16px; | |
| - font-weight: bold; | |
| - color: @darkGray; | |
| - width: 55px; | |
| - margin: auto auto; | |
| - text-align: center; | |
| - | |
| - border-top-left-radius: 20px; | |
| - border-top-right-radius: 20px; | |
| - border-bottom-right-radius: 20px; | |
| - border-bottom-left-radius: 20px; | |
| + padding: 10px; | |
| + background-color: white; | |
| + border: 2px solid @darkGray; | |
| + font-size: 16px; | |
| + font-weight: bold; | |
| + color: @darkGray; | |
| + width: 55px; | |
| + margin: auto auto; | |
| + text-align: center; | |
| + | |
| + border-top-left-radius: 20px; | |
| + border-top-right-radius: 20px; | |
| + border-bottom-right-radius: 20px; | |
| + border-bottom-left-radius: 20px; | |
| } | |
| .stat-modem { | |
| - background-color: white; | |
| - border: 2px solid @red; | |
| - color: @red; | |
| + background-color: white; | |
| + border: 2px solid @red; | |
| + color: @red; | |
| } | |
| .stat-nodata { | |
| - background-color: #f4f4f4; | |
| - border: 2px solid @darkGray; | |
| - color: @darkGray; | |
| - font-size: 24px; | |
| + background-color: #f4f4f4; | |
| + border: 2px solid @darkGray; | |
| + color: @darkGray; | |
| + font-size: 24px; | |
| } | |
| .stat-completed { | |
| - background-color: white; | |
| - border: 2px solid @orange; | |
| - color: @darkGray; | |
| + background-color: white; | |
| + border: 2px solid @orange; | |
| + color: @darkGray; | |
| } | |
| .stat-voice { | |
| - background-color: white; | |
| - border: 2px solid @green; | |
| - color: @darkGray; | |
| + background-color: white; | |
| + border: 2px solid @green; | |
| + color: @darkGray; | |
| } | |
| .stat-voicemail { | |
| - background-color: white; | |
| - border: 2px solid @blue; | |
| - color: @darkGray; | |
| + background-color: white; | |
| + border: 2px solid @blue; | |
| + color: @darkGray; | |
| } | |
| .stat-fax { | |
| - background-color: white; | |
| - border: 2px solid @darkGray; | |
| - color: @darkGray; | |
| + background-color: white; | |
| + border: 2px solid @darkGray; | |
| + color: @darkGray; | |
| } | |
| .stat-modem { | |
| - background-color: white; | |
| - border: 2px solid @red; | |
| - color: @darkGray; | |
| + background-color: white; | |
| + border: 2px solid @red; | |
| + color: @darkGray; | |
| } | |
| .arrow-down { | |
| - font-size: 18px; | |
| - text-align: center; | |
| - margin: auto auto; | |
| - padding-top: 10px; | |
| - padding-bottom: 10px; | |
| - color: @darkOrange; | |
| + font-size: 18px; | |
| + text-align: center; | |
| + margin: auto auto; | |
| + padding-top: 10px; | |
| + padding-bottom: 10px; | |
| + color: @darkOrange; | |
| } | |
| .arrow-right { | |
| - font-size: 22px; | |
| - text-align: center; | |
| - margin: auto auto; | |
| - padding-top: 10px; | |
| - padding-bottom: 10px; | |
| + font-size: 22px; | |
| + text-align: center; | |
| + margin: auto auto; | |
| + padding-top: 10px; | |
| + padding-bottom: 10px; | |
| } | |
| .stat-subtitle { | |
| - text-align: center; | |
| - font-size: 12px; | |
| - margin-top: 1px; | |
| + text-align: center; | |
| + font-size: 12px; | |
| + margin-top: 1px; | |
| } | |
| .fwd_match_span { | |
| - width: 100px; | |
| - padding-left: 20px; | |
| - padding-right: 20px; | |
| - padding-bottom: 5px; | |
| - padding-top: 5px; | |
| - font-weight: bold; | |
| - color: white; | |
| - text-align: center; | |
| + width: 100px; | |
| + padding-left: 20px; | |
| + padding-right: 20px; | |
| + padding-bottom: 5px; | |
| + padding-top: 5px; | |
| + font-weight: bold; | |
| + color: white; | |
| + text-align: center; | |
| } | |
| .filter-label { | |
| - line-height: 16px; | |
| - font-size: 16px; | |
| - margin-right: 5px; | |
| - padding-top: 5px; | |
| - font-weight: bold; | |
| + line-height: 16px; | |
| + font-size: 16px; | |
| + margin-right: 5px; | |
| + padding-top: 5px; | |
| + font-weight: bold; | |
| } | |
| .filter-select { | |
| - line-height: 14px; | |
| - font-size: 14px; | |
| - width: 120px; | |
| - font-weight: bold; | |
| + line-height: 14px; | |
| + font-size: 14px; | |
| + width: 120px; | |
| + font-weight: bold; | |
| } | |
| .popover-title { | |
| - line-height: 12px; | |
| - font-size: 12px; | |
| - text-align: center; | |
| - font-weight: bold; | |
| + line-height: 12px; | |
| + font-size: 12px; | |
| + text-align: center; | |
| + font-weight: bold; | |
| } | |
| .popover-content { | |
| @@ -233,83 +303,83 @@ | |
| } | |
| .xtooltip { | |
| - border-bottom: 1px dotted @blue; | |
| - cursor: help; | |
| + border-bottom: 1px dotted @blue; | |
| + cursor: help; | |
| } | |
| .xpopover { | |
| - border-bottom: 1px dotted @blue; | |
| - cursor: help; | |
| + border-bottom: 1px dotted @blue; | |
| + cursor: help; | |
| } | |
| .progress-bar { | |
| - margin-bottom: -2px; | |
| + margin-bottom: -2px; | |
| } | |
| .progress_pct { | |
| - color: @darkGray; | |
| - margin-left: 10px; | |
| - font-weight: bold; | |
| + color: @darkGray; | |
| + margin-left: 10px; | |
| + font-weight: bold; | |
| } | |
| .task_args_formatted { | |
| - padding:10px; | |
| + padding:10px; | |
| } | |
| .task_args_var { | |
| - font-size: 12px; | |
| - float: left; | |
| - font-weight: bold; | |
| - text-align: right; | |
| + font-size: 12px; | |
| + float: left; | |
| + font-weight: bold; | |
| + text-align: right; | |
| } | |
| .task_args_val { | |
| - font-size: 14px; | |
| - text-align: left; | |
| - padding-left: 5px; | |
| - float: auto; | |
| + font-size: 14px; | |
| + text-align: left; | |
| + padding-left: 5px; | |
| + float: auto; | |
| } | |
| .check-item { | |
| - font-size: 18px; | |
| - margin-bottom: 10px; | |
| + font-size: 18px; | |
| + margin-bottom: 10px; | |
| } | |
| .check-result { | |
| - margin-left: 40px; | |
| - width: 500px; | |
| - font-size: 16px; | |
| + margin-left: 40px; | |
| + width: 500px; | |
| + font-size: 16px; | |
| } | |
| // Hacks to override active drop-down item background color and hover | |
| .dropdown-menu .active > a { | |
| - background-color: @white; | |
| - background-image: none; | |
| - color: @darkGray; | |
| + background-color: @white; | |
| + background-image: none; | |
| + color: @darkGray; | |
| } | |
| // Do not make active icons white | |
| .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a … | |
| - color: @darkGray; | |
| - background-image: url("/assets/twitter/bootstrap/glyphicons-halflings.… | |
| + color: @darkGray; | |
| + background-image: url("/assets/twitter/bootstrap/glyphicons-halflings.png"); | |
| } | |
| .dropdown-menu .active > a:hover { | |
| - background-color: @orange; | |
| - background-image: none; | |
| - color: @white; | |
| + background-color: @orange; | |
| + background-image: none; | |
| + color: @white; | |
| } | |
| .fconstrained { | |
| - width: 400px; | |
| + width: 400px; | |
| } | |
| .project_description { | |
| - height: 100px; | |
| - padding: 5px; | |
| + height: 100px; | |
| + padding: 5px; | |
| } | |
| .project_includes { | |
| - height: 100px; | |
| - padding: 5px; | |
| + height: 100px; | |
| + padding: 5px; | |
| } | |
| body#login { | |
| @@ -351,35 +421,35 @@ background-image: linear-gradient(to bottom, #EA5709 0%, … | |
| } | |
| #login-logo { | |
| - margin-left: auto; | |
| - margin-right: auto; | |
| - width: 222px; | |
| - height: 68px; | |
| - margin-top: 60px; | |
| + margin-left: auto; | |
| + margin-right: auto; | |
| + width: 222px; | |
| + height: 68px; | |
| + margin-top: 60px; | |
| } | |
| #box { | |
| - margin-left: auto; | |
| - margin-right: auto; | |
| - width: 350px; | |
| - background: white; | |
| - padding: 25px; | |
| - margin-top: 20px; | |
| - border: 1px solid #4A1C04; | |
| - margin-bottom: 30px; | |
| + margin-left: auto; | |
| + margin-right: auto; | |
| + width: 350px; | |
| + background: white; | |
| + padding: 25px; | |
| + margin-top: 20px; | |
| + border: 1px solid #4A1C04; | |
| + margin-bottom: 30px; | |
| } | |
| .login-label { | |
| - width: 120px; | |
| - margin-right: 10px; | |
| - margin-bottom: 5px; | |
| - text-align: right; | |
| - font-weight: bold; | |
| - float: left; | |
| + width: 120px; | |
| + margin-right: 10px; | |
| + margin-bottom: 5px; | |
| + text-align: right; | |
| + font-weight: bold; | |
| + float: left; | |
| } | |
| .btn-login { | |
| - margin-left: 130px; | |
| + margin-left: 130px; | |
| } | |
| .nav { | |
| @@ -389,7 +459,7 @@ background-image: linear-gradient(to bottom, #EA5709 0%, #0… | |
| } | |
| .content { | |
| - margin-top: 40px; | |
| + margin-top: 80px; | |
| } | |
| .accordion-toggle:hover { | |
| @@ -397,18 +467,18 @@ background-image: linear-gradient(to bottom, #EA5709 0%, … | |
| } | |
| h1 { | |
| - font-size: 24px; | |
| - line-height: 30px; | |
| + font-size: 24px; | |
| + line-height: 30px; | |
| } | |
| h2 { | |
| - font-size: 20px; | |
| - line-height: 24px; | |
| + font-size: 20px; | |
| + line-height: 24px; | |
| } | |
| h3 { | |
| - font-size: 16px; | |
| - line-height: 18px; | |
| + font-size: 16px; | |
| + line-height: 18px; | |
| } | |
| .header { | |
| diff --git a/app/controllers/analyze_controller.rb b/app/controllers/analyze_co… | |
| @@ -1,31 +1,28 @@ | |
| class AnalyzeController < ApplicationController | |
| def index | |
| - @jobs = Job.paginate( | |
| - :page => params[:page], | |
| - :order => 'id DESC', | |
| - :per_page => 30 | |
| - ) | |
| + @jobs = Job.order('id DESC').paginate( | |
| + :page => params[:page], | |
| + :per_page => 30 | |
| + ) | |
| end | |
| def view | |
| - @job_id = params[:id] | |
| - @job = Job.find(@job_id) | |
| - @shown = params[:show] | |
| + @job_id = params[:id] | |
| + @job = Job.find(@job_id) | |
| + @shown = params[:show] | |
| - if request.format.html? | |
| - ltypes = Call.find( :all, :select => 'DISTINCT line_type', :co… | |
| - res_types = {} | |
| + if request.format.html? | |
| + ltypes = Call.select('DISTINCT line_type').where(:job_id => @job_id).map… | |
| + res_types = {} | |
| - ltypes.each do |k| | |
| - next if not k | |
| - res_types[k.capitalize.to_sym] = Call.count( | |
| - :conditions => ['job_id = ? and line_type = ?'… | |
| - ) | |
| - end | |
| + ltypes.each do |k| | |
| + next if not k | |
| + res_types[k.capitalize.to_sym] = Call.where(:job_id => @job_id, :line_… | |
| + end | |
| - @lines_by_type = res_types | |
| - end | |
| + @lines_by_type = res_types | |
| + end | |
| sort_by = params[:sort_by] || 'number' | |
| sort_dir = params[:sort_dir] || 'asc' | |
| @@ -44,57 +41,53 @@ class AnalyzeController < ApplicationController | |
| end | |
| @results_offset = (params[:iDisplayStart] || 0).to_i | |
| - calls_search | |
| + calls_search | |
| - @results_total_display_count = Call.where(@search_conditions).count() | |
| - @results = Call.where(@search_conditions).includes(:provider).limit(@res… | |
| + @results_total_display_count = Call.where(@search_conditions).count() | |
| + @results = Call.where(@search_conditions).includes(:provider).limit(@resul… | |
| end | |
| - respond_to do |format| | |
| + respond_to do |format| | |
| format.html | |
| format.json { | |
| - render :content_type => 'application/json', :json => render_to_s… | |
| + render :content_type => 'application/json', :json => render_to_string(… | |
| } | |
| end | |
| end | |
| def view_matches | |
| - @result = Call.find(params[:call_id]) | |
| - @match_scopes = [ | |
| - { :scope => 'job', :label => 'This Job' }, | |
| - { :scope => 'project', :label => 'This Project' }, | |
| - { :scope => 'global', :label => 'All Projects' } | |
| - ] | |
| - | |
| - @job_id = params[:job_id] | |
| - | |
| - if @job_id | |
| - @match_scope = params[:match_scope] || "job" | |
| - else | |
| - @match_scope = params[:match_scope] || "project" | |
| - end | |
| - | |
| - @results = @result.paginate_matches(@match_scope, 30.0, params[:page],… | |
| - end | |
| - | |
| + @result = Call.find(params[:call_id]) | |
| + @match_scopes = [ | |
| + { :scope => 'job', :label => 'This Job' }, | |
| + { :scope => 'project', :label => 'This Project' }, | |
| + { :scope => 'global', :label => 'All Projects' } | |
| + ] | |
| + | |
| + @job_id = params[:job_id] | |
| + | |
| + if @job_id | |
| + @match_scope = params[:match_scope] || "job" | |
| + else | |
| + @match_scope = params[:match_scope] || "project" | |
| + end | |
| + @results = @result.paginate_matches(@match_scope, 30.0, params[:page], 30) | |
| + end | |
| def index | |
| - @shown = params[:show] | |
| + @shown = params[:show] | |
| - ltypes = Line.find( :all, :select => 'DISTINCT line_type', :conditions… | |
| - res_types = {} | |
| + ltypes = Line.select('DISTINCT line_type').where(project_id: @project.id).… | |
| + res_types = {} | |
| - ltypes.each do |k| | |
| - next if not k | |
| - res_types[k.capitalize.to_sym] = Line.count( | |
| - :conditions => ['project_id = ? and line_type = ?', @p… | |
| - ) | |
| - end | |
| + ltypes.each do |k| | |
| + next if not k | |
| + res_types[k.capitalize.to_sym] = Line.where(project_id: @project.id, lin… | |
| + end | |
| - @lines_by_type = res_types | |
| + @lines_by_type = res_types | |
| sort_by = params[:sort_by] || 'number' | |
| sort_dir = params[:sort_dir] || 'asc' | |
| @@ -110,129 +103,127 @@ class AnalyzeController < ApplicationController | |
| end | |
| @results_offset = (params[:iDisplayStart] || 0).to_i | |
| - project_search | |
| + project_search | |
| @results = Call.where(@search_conditions).includes(:provider).limit(@res… | |
| @results_total_display_count = Call.where(@search_conditions).includes(:… | |
| end | |
| - respond_to do |format| | |
| + respond_to do |format| | |
| format.html | |
| format.json { | |
| - render :content_type => 'application/json', :json => render_to_s… | |
| + render :content_type => 'application/json', :json => render_to_string(… | |
| } | |
| end | |
| end | |
| def resource | |
| - ctype = 'text/html' | |
| - cpath = nil | |
| - cdata = "File not found" | |
| - | |
| - res = CallMedium.where(:call_id => params[:result_id].to_i).first | |
| - | |
| - if res | |
| - case params[:type] | |
| - when 'big_sig' | |
| - ctype = 'image/png' | |
| - cdata = res.png_sig_freq | |
| - when 'big_sig_dots' | |
| - ctype = 'image/png' | |
| - cdata = res.png_big_dots | |
| - when 'small_sig' | |
| - ctype = 'image/png' | |
| - cdata = res.png_sig | |
| - when 'big_freq' | |
| - ctype = 'image/png' | |
| - cdata = res.png_big_freq | |
| - when 'small_freq' | |
| - ctype = 'image/png' | |
| - cdata = res.png_sig_freq | |
| - when 'mp3' | |
| - ctype = 'audio/mpeg' | |
| - cdata = res.mp3 | |
| - when 'sig' | |
| - ctype = 'text/plain' | |
| - cdata = res.fprint | |
| - when 'raw' | |
| - ctype = 'octet/binary-stream' | |
| - cdata = res.audio | |
| - end | |
| - end | |
| + ctype = 'text/html' | |
| + cpath = nil | |
| + cdata = "File not found" | |
| + | |
| + res = CallMedium.where(:call_id => params[:result_id].to_i).first | |
| + | |
| + if res | |
| + case params[:rtype] | |
| + when 'big_sig' | |
| + ctype = 'image/png' | |
| + cdata = res.png_sig_freq | |
| + when 'big_sig_dots' | |
| + ctype = 'image/png' | |
| + cdata = res.png_big_dots | |
| + when 'small_sig' | |
| + ctype = 'image/png' | |
| + cdata = res.png_sig | |
| + when 'big_freq' | |
| + ctype = 'image/png' | |
| + cdata = res.png_big_freq | |
| + when 'small_freq' | |
| + ctype = 'image/png' | |
| + cdata = res.png_sig_freq | |
| + when 'mp3' | |
| + ctype = 'audio/mpeg' | |
| + cdata = res.mp3 | |
| + when 'sig' | |
| + ctype = 'text/plain' | |
| + cdata = res.fprint | |
| + when 'raw' | |
| + ctype = 'octet/binary-stream' | |
| + cdata = res.audio | |
| + end | |
| + end | |
| send_data(cdata, :type => ctype, :disposition => 'inline') | |
| end | |
| - | |
| - | |
| + # | |
| # Generate a SQL sort by option based on the incoming DataTables paramater. | |
| # | |
| # Returns the SQL String. | |
| def calls_sort_option | |
| column = case params[:iSortCol_0].to_s | |
| - when '1' | |
| - 'number' | |
| - when '2' | |
| - 'line_type' | |
| - when '3' | |
| - 'peak_freq' | |
| - end | |
| + when '1' | |
| + 'number' | |
| + when '2' | |
| + 'line_type' | |
| + when '3' | |
| + 'peak_freq' | |
| + end | |
| column + ' ' + (params[:sSortDir_0] =~ /^A/i ? 'asc' : 'desc') if column | |
| end | |
| def calls_search | |
| - @search_conditions = [] | |
| - terms = params[:sSearch].to_s | |
| - terms = Shellword.shellwords(terms) rescue terms.split(/\s+/) | |
| - where = "job_id = ? AND analysis_completed_at IS NOT NULL " | |
| - param = [ @job_id ] | |
| - glue = "AND " | |
| - terms.each do |w| | |
| - next if w == "undefined" | |
| - where << glue | |
| - case w | |
| - when /^F(\d+)$/i # F2100 = peak frequency between 20… | |
| - freq = $1.to_i | |
| - where << "( peak_freq > ? AND peak_freq < ? ) " | |
| - param << freq - 5.0 | |
| - param << freq + 5.0 | |
| - else | |
| - where << "( number ILIKE ? OR caller_id ILIKE … | |
| - param << "%#{w}%" | |
| - param << "%#{w}%" | |
| - param << "%#{w}%" | |
| - end | |
| - glue = "AND " if glue.empty? | |
| - end | |
| + @search_conditions = [] | |
| + terms = params[:sSearch].to_s | |
| + terms = Shellword.shellwords(terms) rescue terms.split(/\s+/) | |
| + where = "job_id = ? AND analysis_completed_at IS NOT NULL " | |
| + param = [ @job_id ] | |
| + glue = "AND " | |
| + terms.each do |w| | |
| + next if w == "undefined" | |
| + where << glue | |
| + case w | |
| + when /^F(\d+)$/i # F2100 = peak frequency between 2095hz and 2105hz | |
| + freq = $1.to_i | |
| + where << "( peak_freq > ? AND peak_freq < ? ) " | |
| + param << freq - 5.0 | |
| + param << freq + 5.0 | |
| + else | |
| + where << "( number ILIKE ? OR caller_id ILIKE ? OR line_type ILIKE ?… | |
| + param << "%#{w}%" | |
| + param << "%#{w}%" | |
| + param << "%#{w}%" | |
| + end | |
| + glue = "AND " if glue.empty? | |
| + end | |
| @search_conditions = [ where, *param ] | |
| end | |
| def project_search | |
| - @search_conditions = [] | |
| - terms = params[:sSearch].to_s | |
| - terms = Shellword.shellwords(terms) rescue terms.split(/\s+/) | |
| - where = "project_id = ? AND analysis_completed_at IS NOT NULL " | |
| - param = [ @project.id ] | |
| - glue = "AND " | |
| - terms.each do |w| | |
| - next if w == "undefined" | |
| - where << glue | |
| - case w | |
| - when /^F(\d+)$/i # F2100 = peak frequency between 20… | |
| - freq = $1.to_i | |
| - where << "( peak_freq > ? AND peak_freq < ? ) " | |
| - param << freq - 5.0 | |
| - param << freq + 5.0 | |
| - else | |
| - where << "( number ILIKE ? OR caller_id ILIKE … | |
| - param << "%#{w}%" | |
| - param << "%#{w}%" | |
| - param << "%#{w}%" | |
| - end | |
| - glue = "AND " if glue.empty? | |
| - end | |
| - @search_conditions = [ where, *param ] | |
| + @search_conditions = [] | |
| + terms = params[:sSearch].to_s | |
| + terms = Shellword.shellwords(terms) rescue terms.split(/\s+/) | |
| + where = "project_id = ? AND analysis_completed_at IS NOT NULL " | |
| + param = [ @project.id ] | |
| + glue = "AND " | |
| + terms.each do |w| | |
| + next if w == "undefined" | |
| + where << glue | |
| + case w | |
| + when /^F(\d+)$/i # F2100 = peak frequency between 2095hz and 2105hz | |
| + freq = $1.to_i | |
| + where << "( peak_freq > ? AND peak_freq < ? ) " | |
| + param << freq - 5.0 | |
| + param << freq + 5.0 | |
| + else | |
| + where << "( number ILIKE ? OR caller_id ILIKE ? OR line_type ILIKE ?… | |
| + param << "%#{w}%" | |
| + param << "%#{w}%" | |
| + param << "%#{w}%" | |
| + end | |
| + glue = "AND " if glue.empty? | |
| + end | |
| + @search_conditions = [ where, *param ] | |
| end | |
| - | |
| end | |
| diff --git a/app/controllers/calls_controller.rb b/app/controllers/calls_contro… | |
| @@ -3,9 +3,8 @@ class CallsController < ApplicationController | |
| # GET /calls | |
| # GET /calls.xml | |
| def index | |
| - @jobs = @project.jobs.where('task = ? AND completed_at IS NOT NULL', 'dial… | |
| + @jobs = @project.jobs.order('id DESC').where('task = ? AND completed_at IS… | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 30 | |
| ) | |
| @@ -18,9 +17,8 @@ class CallsController < ApplicationController | |
| # GET /calls/1/view | |
| # GET /calls/1/view.xml | |
| def view | |
| - @calls = Call.where(:job_id => params[:id]).paginate( | |
| + @calls = Call.order('id DESC').where(:job_id => params[:id]).paginate( | |
| :page => params[:page], | |
| - :order => 'number ASC', | |
| :per_page => 30 | |
| ) | |
| diff --git a/app/controllers/jobs_controller.rb b/app/controllers/jobs_controll… | |
| @@ -7,9 +7,8 @@ class JobsController < ApplicationController | |
| @submitted_jobs = Job.where(:status => ['submitted', 'schedule… | |
| @active_jobs = Job.where(:status => 'running', :completed_a… | |
| - @inactive_jobs = Job.where('status NOT IN (?)', ['submitted',… | |
| + @inactive_jobs = Job.order('id DESC').where('status NOT IN (?… | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 30 | |
| ) | |
| @@ -27,9 +26,8 @@ class JobsController < ApplicationController | |
| end | |
| def results | |
| - @jobs = @project.jobs.where('(task = ? OR task = ?) AND comple… | |
| + @jobs = @project.jobs.order('id DESC').where('(task = ? OR tas… | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 30 | |
| ) | |
| diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_… | |
| @@ -1,9 +1,8 @@ | |
| class ProjectsController < ApplicationController | |
| def index | |
| - @projects = Project.paginate( | |
| + @projects = Project.order('id DESC').paginate( | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 10 | |
| ) | |
| @@ -18,9 +17,8 @@ class ProjectsController < ApplicationController | |
| def show | |
| @project = Project.find(params[:id]) | |
| @active_jobs = @project.jobs.where(:status => 'running', :comp… | |
| - @inactive_jobs = @project.jobs.where('status NOT IN (?)… | |
| + @inactive_jobs = @project.jobs.order('id DESC').where('… | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 30 | |
| ) | |
| diff --git a/app/controllers/providers_controller.rb b/app/controllers/provider… | |
| @@ -2,9 +2,8 @@ class ProvidersController < ApplicationController | |
| def index | |
| - @providers = Provider.paginate( | |
| + @providers = Provider.order('id DESC').paginate( | |
| :page => params[:page], | |
| - :order => 'id DESC', | |
| :per_page => 10 | |
| ) | |
| diff --git a/app/models/call.rb b/app/models/call.rb | |
| @@ -1,86 +1,104 @@ | |
| class Call < ActiveRecord::Base | |
| - reportable :hourly, :aggregation => :count, :grouping => :hour, :live_… | |
| - reportable :daily, :aggregation => :count, :grouping => :day, :live_da… | |
| - reportable :weekly, :aggregation => :count, :grouping => :week, :live_… | |
| - reportable :monthly, :aggregation => :count, :grouping => :month, :liv… | |
| - | |
| - reportable :analyzed_hourly, :aggregation => :count, :grouping => :hou… | |
| - reportable :analyzed_daily, :aggregation => :count, :grouping => :day,… | |
| - reportable :analyzed_weekly, :aggregation => :count, :grouping => :wee… | |
| - reportable :analyzed_monthly, :aggregation => :count, :grouping => :mo… | |
| - | |
| - belongs_to :project | |
| - belongs_to :provider | |
| - belongs_to :job | |
| - has_one :call_medium, :dependent => :delete | |
| - | |
| - has_many :matches, :class_name => 'Call', :finder_sql => proc { | |
| - 'SELECT calls.*, ' + | |
| - " (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::… | |
| - 'FROM calls ' + | |
| - 'WHERE icount(calls.fprint) > 0 AND ' + | |
| - "calls.job_id = \'#{job_id}\' AND " + | |
| - "calls.id != \'#{id}\' " + | |
| -# "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int… | |
| - 'ORDER BY matchscore DESC' | |
| - } | |
| - | |
| - has_many :matches_all_jobs, :class_name => 'Call', :finder_sql => proc… | |
| - 'SELECT calls.*, ' + | |
| - " (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::… | |
| - 'FROM calls ' + | |
| - 'WHERE icount(calls.fprint) > 0 AND ' + | |
| - "calls.id != \'#{id}\' " + | |
| -# "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int[] & cal… | |
| - 'ORDER BY matchscore DESC' | |
| - } | |
| - | |
| - | |
| - after_save :update_linked_line | |
| - | |
| - def paginate_matches(scope, min_match, page, per_page) | |
| - | |
| - scope_limit = "" | |
| - case scope | |
| - when 'job' | |
| - scope_limit = "calls.job_id = \'#{job_id}\' AND " | |
| - when 'project' | |
| - scope_limit = "calls.project_id = \'#{project_id}\' AN… | |
| - end | |
| - | |
| - query = | |
| - 'SELECT calls.*, ' + | |
| - " (( icount(\'{#{fprint.map{|x| x.to_s}.join(",… | |
| - 'FROM calls ' + | |
| - 'WHERE icount(calls.fprint) > 0 AND ' + | |
| - scope_limit + | |
| - "calls.id != \'#{id}\' " + | |
| - "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}… | |
| - 'ORDER BY matchscore DESC' | |
| - | |
| - Call.paginate_by_sql(query, :page => page, :per_page => per_pa… | |
| - end | |
| - | |
| - def media | |
| - CallMedium.find_or_create_by_call_id_and_project_id(self[:id],… | |
| - end | |
| - | |
| - def media_fields | |
| - CallMedium.columns_hash.keys.reject{|x| x =~ /^id|_id$/} | |
| - end | |
| - | |
| - def linked_line | |
| - Line.find_or_create_by_number_and_project_id(self[:number], se… | |
| - end | |
| - | |
| - def update_linked_line | |
| - line = linked_line | |
| - | |
| - if self[:line_type] | |
| - line.line_type = self[:line_type] | |
| - line.save | |
| - end | |
| - end | |
| + reportable :hourly, :aggregation => :count, :grouping => :hour, :live_data =… | |
| + reportable :daily, :aggregation => :count, :grouping => :day, :live_data => … | |
| + reportable :weekly, :aggregation => :count, :grouping => :week, :live_data =… | |
| + reportable :monthly, :aggregation => :count, :grouping => :month, :live_data… | |
| + | |
| + reportable :analyzed_hourly, :aggregation => :count, :grouping => :hour, :da… | |
| + reportable :analyzed_daily, :aggregation => :count, :grouping => :day, :date… | |
| + reportable :analyzed_weekly, :aggregation => :count, :grouping => :week, :da… | |
| + reportable :analyzed_monthly, :aggregation => :count, :grouping => :month, :… | |
| + | |
| + belongs_to :project | |
| + belongs_to :provider | |
| + belongs_to :job | |
| + has_one :call_medium, :dependent => :delete | |
| + | |
| + def matches | |
| + # "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int[] & cal… | |
| + self.find_by_sql([ | |
| + 'SELECT calls.*, ' + | |
| + " (( icount(ARRAY[?]::int[] & calls.fprint::int[]) / icount(ARRAY[?]::i… | |
| + 'FROM calls ' + | |
| + 'WHERE icount(calls.fprint) > 0 AND ' + | |
| + "calls.job_id = ? AND " + | |
| + "calls.id != ? " + | |
| + 'ORDER BY matchscore DESC', | |
| + fprint_map, | |
| + fprint_map, | |
| + self.job_id, | |
| + self.id | |
| + ]) | |
| + end | |
| + | |
| + def matches_all_jobs | |
| + | |
| + # "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int[] & cal… | |
| + self.find_by_sql([ | |
| + 'SELECT calls.*, ' + | |
| + " (( icount(ARRAY[?]::int[] & calls.fprint::int[]) / icount(ARRAY[?]::i… | |
| + 'FROM calls ' + | |
| + 'WHERE icount(calls.fprint) > 0 AND ' + | |
| + "calls.id != ? " + | |
| + 'ORDER BY matchscore DESC', | |
| + fprint, | |
| + fprint, | |
| + self.id | |
| + ]) | |
| + end | |
| + | |
| + after_save :update_linked_line | |
| + | |
| + def paginate_matches(scope, min_match, page, per_page) | |
| + | |
| + match_sql = | |
| + 'SELECT calls.*, ' + | |
| + " (( icount(ARRAY[?]::int[] & calls.fprint::int[]) / icount(ARRAY[?]::i… | |
| + 'FROM calls ' + | |
| + 'WHERE icount(calls.fprint) > 0 AND ' | |
| + args = [fprint, fprint] | |
| + | |
| + case scope | |
| + when 'job' | |
| + match_sql << " calls.job_id = ? AND " | |
| + args << job.id.to_i | |
| + when 'project' | |
| + match_sql << " calls.project_id = ? AND " | |
| + args << project_id.to_i | |
| + end | |
| + | |
| + match_sql << "calls.id != ? " | |
| + args << self.id | |
| + | |
| + match_sql << " AND (( icount(ARRAY[?]::int[] & calls.fprint::int[]) / icou… | |
| + args << fprint | |
| + args << fprint | |
| + args << min_match.to_f | |
| + | |
| + query = [match_sql, *args] | |
| + Call.paginate_by_sql(query, :page => page, :per_page => per_page) | |
| + end | |
| + | |
| + def media | |
| + CallMedium.where(call_id: self.id, project_id: self.project_id).first_or_c… | |
| + end | |
| + | |
| + def media_fields | |
| + CallMedium.columns_hash.keys.reject{|x| x =~ /^id|_id$/} | |
| + end | |
| + | |
| + def linked_line | |
| + Line.where(number: self.number, project_id: self.project_id).first_or_crea… | |
| + end | |
| + | |
| + def update_linked_line | |
| + line = linked_line | |
| + | |
| + if self[:line_type] | |
| + line.line_type = self[:line_type] | |
| + line.save | |
| + end | |
| + end | |
| end | |
| diff --git a/app/models/job.rb b/app/models/job.rb | |
| @@ -82,14 +82,14 @@ class Job < ActiveRecord::Base | |
| validates_with JobValidator | |
| def stop | |
| - self.class.update_all({ :status => 'cancelled'}, { :id => self… | |
| + self.class.where(id: self.id).update_all(status: 'cancelled') | |
| end | |
| def update_progress(pct) | |
| if pct >= 100 | |
| - self.class.update_all({ :progress => pct, :completed_a… | |
| + self.class.where(id: self.id).update_all(:progress => … | |
| else | |
| - self.class.update_all({ :progress => pct }, { :id => s… | |
| + self.class.where(id: self.id).update_all(:progress => … | |
| end | |
| end | |
| @@ -112,6 +112,14 @@ class Job < ActiveRecord::Base | |
| when 'analysis' | |
| self.status = 'submitted' | |
| + d = { | |
| + :scope => self.scope, # job / pr… | |
| + :force => !!(self.force), # true / f… | |
| + :target_id => self.target_id.to_i, # job_id o… | |
| + :target_ids => (self.target_ids || []).map{|x|… | |
| + } | |
| + $stderr.puts d.inspect | |
| + | |
| self.args = Marshal.dump({ | |
| :scope => self.scope, # job / pr… | |
| :force => !!(self.force), # true / f… | |
| diff --git a/app/models/line.rb b/app/models/line.rb | |
| @@ -3,7 +3,7 @@ class Line < ActiveRecord::Base | |
| belongs_to :project | |
| def set_attribute(name, value, ctype='text/plain') | |
| - la = LineAttribute.find_or_create_by_line_id_and_project_id_an… | |
| + la = LineAttribute.where(line_id: self.id, project_id: self.pr… | |
| la.value = value | |
| la.ctype = ctype | |
| la.save | |
| diff --git a/app/views/analyze/index.html.erb b/app/views/analyze/index.html.erb | |
| @@ -17,10 +17,10 @@ | |
| <table width='100%' border=0 cellpadding=6> | |
| <tbody><tr> | |
| <td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-refresh"></i> ReDial'), n… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-refresh"></i> ReDial'), … | |
| </td> | |
| <td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-trash"></i> Delete'), pur… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-trash"></i> Delete'), pu… | |
| </td> | |
| </tr></tbody></table> | |
| diff --git a/app/views/analyze/view.html.erb b/app/views/analyze/view.html.erb | |
| @@ -17,10 +17,10 @@ | |
| <table width='100%' border=0 cellpadding=6> | |
| <tbody><tr> | |
| <td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-refresh"></i> Scan'), new… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-refresh"></i> Scan'), ne… | |
| </td> | |
| <td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-trash"></i> Delete'), pur… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-trash"></i> Delete'), pu… | |
| </td> | |
| </tr></tbody></table> | |
| diff --git a/app/views/application/_nav.html.erb b/app/views/application/_nav.h… | |
| @@ -0,0 +1,67 @@ | |
| + | |
| +<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> | |
| + <div class="container-fluid"> | |
| + <!-- Brand and toggle get grouped for better mobile display --> | |
| + <div class="navbar-header"> | |
| + <button type="button" class="navbar-toggle collapsed" data-toggle="colla… | |
| + <span class="sr-only">Toggle navigation</span> | |
| + <span class="fa fa-bar"></span> | |
| + <span class="fa fa-bar"></span> | |
| + <span class="fa fa-bar"></span> | |
| + </button> | |
| + <a class="navbar-brand" href="/"><img src="/assets/logo_light.png" borde… | |
| + </div> | |
| + | |
| + <div class="collapse navbar-collapse navbar-ex1-collapse"> | |
| + <ul class="nav navbar-nav navbar-right"> | |
| + | |
| + <% if @project and @project.id %> | |
| + <li> | |
| + <%= link_to( | |
| + raw( | |
| + '<i class="fa fa-chevron-left icon-white"></i> ' + | |
| + h(truncate(@project.name, :length => 20)) + | |
| + ' <i class="fa fa-chevron-right icon-white"></i>'), project_path… | |
| + </li> | |
| + <li><a href="<%= results_path(@project) %>">Scans</a></li> | |
| + <li><a href="<%= analyze_path(@project) %>">Analysis</a></li> | |
| + <% end %> | |
| + | |
| + <li><a href="<%= jobs_path %>">Jobs</a></li> | |
| + | |
| + <li class="dropdown"> | |
| + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Projects … | |
| + <ul class="dropdown-menu" role="menu"> | |
| + | |
| + <% if Project.count > 0 %> | |
| + <li><a href="<%= projects_path %>"><i class="fa fa-list"></i> Brow… | |
| + <% end %> | |
| + | |
| + <li><a href="<%= new_project_path %>"><i class="fa fa-plus"></i> Cre… | |
| + | |
| + <% if Project.count > 0 %> | |
| + <li class="divider"></li> | |
| + <li> Recent Projects</li> | |
| + <% Project.order('ID DESC').limit(5).each do |project| %> | |
| + <li><a href="<%= project_path(project)%>"><i class="fa fa-chevro… | |
| + <% end %> | |
| + <% end %> | |
| + </ul> | |
| + </li> | |
| + | |
| + <li class="dropdown"> | |
| + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Admin <sp… | |
| + <ul class="dropdown-menu" role="menu"> | |
| + <li><a href="<%= user_path(current_user) %>"><i class="fa fa-user"><… | |
| + <li><a href="<%= providers_path%>"><i class="fa fa-globe"></i> Provi… | |
| + <!-- <li><a href="<%= settings_path%>"><i class="fa fa-wrench"></i> … | |
| + <li><a href="<%= about_path%>"><i class="fa fa-info-circle"></i> Abo… | |
| + </ul> | |
| + </li> | |
| + | |
| + <li><a href="<%= logout_path %>"><div class="help-icon"><i class="fa f… | |
| + <li><a href="<%= check_path %>"<div class="help-icon"><i class="fa fa-… | |
| + </ul> | |
| + </div><!-- /.navbar-collapse --> | |
| + </div><!-- /.container-fluid --> | |
| +</nav> | |
| diff --git a/app/views/calls/index.html.erb b/app/views/calls/index.html.erb | |
| @@ -7,7 +7,7 @@ | |
| <tr> | |
| <th>ID</th> | |
| <th>Range</th> | |
| - <th>CallerID</th> | |
| + <th>CallerID</th> | |
| <th>Connected</th> | |
| <th>Date</th> | |
| <th>Actions</th> | |
| @@ -21,24 +21,25 @@ | |
| <td><%= job.range %></td> | |
| <td><%= job.cid_mask %></td> | |
| <td><%= ( | |
| - job.calls.where("analysis_completed_at IS NOT NULL").count.to_… | |
| - "/" + | |
| - job.calls.count.to_s | |
| - )%></td> | |
| + job.calls.where("analysis_completed_at IS NOT NULL").count.to_s + | |
| + "/" + | |
| + job.calls.count.to_s | |
| + )%></td> | |
| <td><%= job.started_at.localtime.strftime("%Y-%m-%d %H:%M:%S") %></td> | |
| <td> | |
| - <a class="btn" href="<%= view_call_path(@project,job) %>" rel="tooltip… | |
| - <% if job.calls.where("analysis_completed_at IS NOT NULL").cou… | |
| - <a class="btn" href="<%= analyze_call_path(@project,jo… | |
| - <a class="btn" href="<%= reanalyze_call_path(@project,… | |
| - <% else %> | |
| - <a class="btn" href="<%= analyze_call_path(@project,jo… | |
| - <% end %> | |
| + <a role="button" class="btn" href="<%= view_call_path(@project,job) %>… | |
| - <a class="btn" href="<%= call_path(@project,job) %>" data-confirm=… | |
| - </td> | |
| + <% if job.calls.where("analysis_completed_at IS NOT NULL").count > 0 %> | |
| + <a role="button" class="btn" href="<%= analyze_call_path(@project,job) %… | |
| + <a role="button" class="btn" href="<%= reanalyze_call_path(@project,job)… | |
| + <% else %> | |
| + <a role="button" class="btn" href="<%= analyze_call_path(@project,job) %… | |
| + <% end %> | |
| + | |
| + <a role="button" class="btn" href="<%= call_path(@project,job) %>" data-… | |
| + </td> | |
| </tr> | |
| <% end %> | |
| @@ -54,4 +55,4 @@ | |
| <% end %> | |
| -<a class="btn" href="<%= new_dialer_job_path %>"><i class="icon-plus"></i> Sta… | |
| +<a role="button" class="btn" href="<%= new_dialer_job_path %>"><i class="fa fa… | |
| diff --git a/app/views/home/about.html.erb b/app/views/home/about.html.erb | |
| @@ -6,7 +6,7 @@ | |
| <b>WarVOX</b> is a product of <a href="http://www.rapid7.com/">Rapid7</a> and … | |
| free software. WarVOX is intended for legal security assessment, asset invento… | |
| -and research purposes only. The latest version of WarVOX can be found in <i cl… | |
| +and research purposes only. The latest version of WarVOX can be found in <i cl… | |
| <a href="https://github.com/rapid7/warvox/"> https://github.com/rapid7/warvox/… | |
| </div> | |
| diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb | |
| @@ -2,10 +2,10 @@ | |
| <div class="span3"> | |
| <div class="sidebar"> | |
| <ul class="nav nav-list"> | |
| - <li class="active"><a href="#"><i class="icon-play"></i> Getting Started</… | |
| - <li><a href="#"><i class="icon-book"></i> Library</a></li> | |
| - <li><a href="#"><i class="icon-pencil"></i> Applications</a></li> | |
| - <li><a href="#"><i class="icon-cogs"></i> Settings</a></li> | |
| + <li class="active"><a href="#"><i class="fa fa-play"></i> Getting Started<… | |
| + <li><a href="#"><i class="fa fa-book"></i> Library</a></li> | |
| + <li><a href="#"><i class="fa fa-pencil"></i> Applications</a></li> | |
| + <li><a href="#"><i class="fa fa-cogs"></i> Settings</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| diff --git a/app/views/jobs/index.html.erb b/app/views/jobs/index.html.erb | |
| @@ -20,7 +20,7 @@ | |
| <td><%= time_ago_in_words(job.created_at) %> ago</td> | |
| <td> | |
| - <a class="btn" href="<%= job_path(job) %>" data-confirm="Remov… | |
| + <a class="btn" href="<%= job_path(job) %>" data-confirm="Remov… | |
| </td> | |
| <td><%= link_to( h(truncate(job.project.name, :length => 25)), project_pat… | |
| </tr> | |
| @@ -59,12 +59,12 @@ | |
| <td><%= time_ago_in_words(job.created_at) %> ago</td> | |
| <td> | |
| <% if job.task == "dialer" %> | |
| - <a class="btn" href="<%= view_results_path(job.project,job… | |
| + <a class="btn" href="<%= view_results_path(job.project,job… | |
| <% end %> | |
| <% if job.task == "analysis" and job.details[:scope].to_s != "call… | |
| - <a class="btn" href="<%= view_analyze_path(job.project,job… | |
| + <a class="btn" href="<%= view_analyze_path(job.project,job… | |
| <% end %> | |
| - <a class="btn" href="<%= stop_job_path(job) %>" data-confirm="… | |
| + <a class="btn" href="<%= stop_job_path(job) %>" data-confirm="… | |
| </td> | |
| <td><%= link_to( h(truncate(job.project.name, :length => 25)), project_pat… | |
| </tr> | |
| @@ -78,7 +78,7 @@ | |
| <h1 class='title'>No Active Jobs</h1> | |
| <% end %> | |
| -<a class="btn" href="<%= new_dialer_job_path %>"><i class="icon-phone"></i> <s… | |
| +<a class="btn" href="<%= new_dialer_job_path %>"><i class="fa fa-phone"></i> <… | |
| <% if(@inactive_jobs.length > 0) %> | |
| <br/><br/> | |
| diff --git a/app/views/jobs/new_analyze.html.erb b/app/views/jobs/new_analyze.h… | |
| @@ -1,6 +1,6 @@ | |
| <h1 class='title'>Call Analysis</h1> | |
| -<%= semantic_form_for(@job, :url => analyze_project_job_path(@project) ) do |f… | |
| +<%= semantic_form_for(@job, :url => analyze_project_job_path, :html => { :mult… | |
| <% if @project %> | |
| <%= f.input :project_id, :as => :hidden, :input_html => { :value => @p… | |
| @@ -11,7 +11,7 @@ | |
| <%= f.input :force, :as => :boolean, :label => 'Process previously an… | |
| <%= f.action :submit, :label => 'Analyze', :button_html => { :class =>… | |
| - <a class="btn btn-link" href="<%= project_path(@project) %>" rel="tool… | |
| + <a class="btn btn-link" href="<%= project_path(@project) %>" rel="tool… | |
| <% end %> | |
| <%= set_focus('job_submit') %> | |
| diff --git a/app/views/jobs/new_dialer.html.erb b/app/views/jobs/new_dialer.htm… | |
| @@ -20,7 +20,7 @@ | |
| <%= f.action :submit, :label => 'Dial', :button_html => { :class => 'b… | |
| - <a class="btn btn-link" href="<%= jobs_path %>" rel="tooltip" title="R… | |
| + <a class="btn btn-link" href="<%= jobs_path %>" rel="tooltip" title="R… | |
| <% end %> | |
| <%= set_focus('job_range') %> | |
| diff --git a/app/views/jobs/results.html.erb b/app/views/jobs/results.html.erb | |
| @@ -19,56 +19,56 @@ | |
| <% @jobs.each do |job| | |
| - cnt_dialed = job.calls.count.to_i | |
| - cnt_answered = job.calls.where("answered = ? and busy = ?", true, fals… | |
| - cnt_analyzed = job.calls.where("analysis_completed_at IS NOT NULL").co… | |
| - pct_answered = 0 | |
| - pct_analyzed = 0 | |
| - unless cnt_dialed == 0 | |
| - pct_answered = ((cnt_answered.to_f / cnt_dialed.to_f) * 100).t… | |
| - end | |
| - unless cnt_answered == 0 | |
| - pct_analyzed = ((cnt_analyzed.to_f / cnt_answered.to_f) * 100)… | |
| - end | |
| + cnt_dialed = job.calls.count.to_i | |
| + cnt_answered = job.calls.where("answered = ? and busy = ?", true, false).cou… | |
| + cnt_analyzed = job.calls.where("analysis_completed_at IS NOT NULL").count.to… | |
| + pct_answered = 0 | |
| + pct_analyzed = 0 | |
| + unless cnt_dialed == 0 | |
| + pct_answered = ((cnt_answered.to_f / cnt_dialed.to_f) * 100).to_i | |
| + end | |
| + unless cnt_answered == 0 | |
| + pct_analyzed = ((cnt_analyzed.to_f / cnt_answered.to_f) * 100).to_i | |
| + end | |
| %> | |
| <tr> | |
| <td><%= job.id %></td> | |
| <td><%= format_job_details(job) %></td> | |
| <td> | |
| - <% if job.task == "dialer" %> | |
| - <%= truncate(job.details[:range].to_s, :length => 15) … | |
| - <%= job.details[:cid_mask].to_s %> | |
| - <% end %> | |
| - <span rel="tooltip" class="xtooltip" title="<%= job.detail… | |
| - <%= truncate(job.details[:directory].to_s, :length => … | |
| - <% if job.task == "importer" %> | |
| + <% if job.task == "dialer" %> | |
| + <%= truncate(job.details[:range].to_s, :length => 15) %> / | |
| + <%= job.details[:cid_mask].to_s %> | |
| + <% end %> | |
| + <span rel="tooltip" class="xtooltip" title="<%= job.details[:directory… | |
| + <%= truncate(job.details[:directory].to_s, :length => 15) %> | |
| + <% if job.task == "importer" %> | |
| - <% end %> | |
| + <% end %> | |
| </td> | |
| <td><span rel="tooltip" class="xtooltip" title="<%= pct_answered %>% answe… | |
| <td><span rel="tooltip" class="xtooltip" title="<%= pct_analyzed %>% analy… | |
| - <td><%= time_ago_in_words(job.created_at) %> ago</td> | |
| - <td><%= job.created_by %></td> | |
| + <td><%= time_ago_in_words(job.created_at) %> ago</td> | |
| + <td><%= job.created_by %></td> | |
| <td> | |
| - <a class="btn" href="<%= view_results_path(@project,job) %>" rel="tool… | |
| + <a role="button" class="btn" href="<%= view_results_path(@project,job)… | |
| - <% if cnt_analyzed > 0 %> | |
| - <a class="btn" href="<%= view_analyze_path(@project,jo… | |
| - <% if pct_analyzed == 100 %> | |
| - <a class="btn" href="<%= reanalyze_job_path(@p… | |
| - <% else %> | |
| - <a class="btn" href="<%= analyze_job_path(@pro… | |
| - <% end %> | |
| - <% else %> | |
| - <% if cnt_answered > 0 %> | |
| - <a class="btn" href="<%= analyze_job_path(@project,job… | |
| - <% end %> | |
| - <% end %> | |
| + <% if cnt_analyzed > 0 %> | |
| + <a role="button" class="btn" href="<%= view_analyze_path(@project,job) %… | |
| + <% if pct_analyzed == 100 %> | |
| + <a role="button" class="btn" href="<%= reanalyze_job_path(@project,job… | |
| + <% else %> | |
| + <a role="button" class="btn" href="<%= analyze_job_path(@project,job) … | |
| + <% end %> | |
| + <% else %> | |
| + <% if cnt_answered > 0 %> | |
| + <a role="button" class="btn" href="<%= analyze_job_path(@project,job) %>… | |
| + <% end %> | |
| + <% end %> | |
| - <a class="btn" href="<%= job_path(job) %>" data-confirm="Delete al… | |
| - </td> | |
| + <a role="button" class="btn" href="<%= job_path(job) %>" data-confirm="D… | |
| + </td> | |
| </tr> | |
| <% end %> | |
| @@ -84,4 +84,4 @@ | |
| <% end %> | |
| -<a class="btn" href="<%= new_dialer_project_job_path(@project) %>"><i class="i… | |
| +<a role="button" class="btn" href="<%= new_dialer_project_job_path(@project) %… | |
| diff --git a/app/views/jobs/view_results.html.erb b/app/views/jobs/view_results… | |
| @@ -16,11 +16,11 @@ | |
| <table width='100%' border=0 cellpadding=6> | |
| <tbody><tr> | |
| <td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-refresh"></i> Scan'), new… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-refresh"></i> Scan'), ne… | |
| </td><td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-cog"></i> Analyze'), anal… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-cog"></i> Analyze'), ana… | |
| </td><td> | |
| - <%= submit_checkboxes_to(raw('<i class="icon-trash"></i> Delete'), pur… | |
| + <%= submit_checkboxes_to(raw('<i class="fa fa-trash"></i> Delete'), pu… | |
| </td> | |
| </tr></tbody></table> | |
| diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/applica… | |
| @@ -12,8 +12,10 @@ | |
| <![endif]--> | |
| <%= javascript_include_tag "application" %> | |
| + | |
| <%= yield :view_javascript %> | |
| <%= stylesheet_link_tag "application", :media => "all" %> | |
| + | |
| <%= yield :view_stylesheets %> | |
| <%= favicon_link_tag '/assets/favicon.ico', :rel => 'shortcut icon' %> | |
| <%= javascript_tag do %> | |
| @@ -32,50 +34,8 @@ | |
| <% end %> | |
| </head> | |
| <body> | |
| - <div class="container"> | |
| - <%= nav_bar :fixed => :top, :brand => raw('<img src="/assets/l… | |
| - | |
| - <%= menu_group :pull => :right do %> | |
| - <% if @project and @project.id %> | |
| - <li> | |
| - <%= link_to( | |
| - raw( | |
| - '<i class="icon-chevro… | |
| - h(truncate(@project.na… | |
| - ' <i class="icon-chevr… | |
| - </li> | |
| - <%= menu_item "Scans", results_path(@project) … | |
| - <%= menu_item "Analysis", analyze_path(@projec… | |
| - <% end %> | |
| - | |
| - <%= menu_item "Jobs", jobs_path %> | |
| - <%= drop_down "Projects" do %> | |
| - <% if Project.count > 0 %> | |
| - <%= menu_item raw('<i class="i… | |
| - <% end %> | |
| - <%= menu_item raw('<i class="icon-plus… | |
| - <% if Project.count > 0 %> | |
| - <%= drop_down_divider %> | |
| - <%= drop_down_header "Recent P… | |
| - <% Project.find(:all, :order =… | |
| - <%= menu_item raw('<i … | |
| - <% end %> | |
| - <% end %> | |
| - <% end %> | |
| - | |
| - <%= drop_down "Admin" do %> | |
| - <%= menu_item raw('<i class="icon-user… | |
| - <%= menu_item raw('<i class="icon-glob… | |
| - <%= menu_item raw('<i class="icon-wren… | |
| - <%= menu_item raw('<i class="icon-info… | |
| - <% end %> | |
| - | |
| - <%= menu_item raw('<div class="help-icon"><i c… | |
| - | |
| - <%= menu_item raw('<div class="help-icon"><i c… | |
| - <% end %> | |
| - <% end %> | |
| - | |
| + <%= render 'nav' %> | |
| + <div class="container" id="main"> | |
| <div class="row"> | |
| <div class="span12"> | |
| <div class="content"> | |
| @@ -85,7 +45,7 @@ | |
| </div> | |
| <footer class="footer"> | |
| - <p>WarVOX v<%=WarVOX::VERSION %> © 2009-<%= Time.now.ye… | |
| + <p>WarVOX v<%=WarVOX::VERSION %> © 2009-<%= Time.now.ye… | |
| </footer> | |
| </div> | |
| diff --git a/app/views/projects/edit.html.erb b/app/views/projects/edit.html.erb | |
| @@ -4,7 +4,7 @@ | |
| <%= f.input :name, :as => :string, :label => 'Name' %> | |
| <%= f.input :description, :as => :text, :input_html => { :class => 'pr… | |
| <%= f.action :submit, :label => 'Update', :button_html => { :class => … | |
| - <a class="btn btn-link" href="<%= projects_path %>"rel="tooltip" title… | |
| + <a class="btn btn-link" href="<%= projects_path %>"rel="tooltip" title… | |
| <% end %> | |
| <%= set_focus('project_name') %> | |
| diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.… | |
| @@ -25,8 +25,8 @@ | |
| <td><%= number_with_delimiter(project.calls.where('analysis_completed_at I… | |
| <td><%= time_ago_in_words(project.created_at) %> ago</td> | |
| <td> | |
| - <a class="btn" href="<%= edit_project_path(project) %>"rel="tool… | |
| - <a class="btn" href="<%= project_path(project) %>" data-confirm="D… | |
| + <a class="btn" href="<%= edit_project_path(project) %>"rel="tool… | |
| + <a class="btn" href="<%= project_path(project) %>" data-confirm="D… | |
| </td> | |
| </tr> | |
| @@ -43,4 +43,4 @@ | |
| <% end %> | |
| -<a class="btn" href="<%= new_project_path %>"><i class="icon-plus"></i> Create… | |
| +<a class="btn" href="<%= new_project_path %>"><i class="fa fa-plus"></i> Creat… | |
| diff --git a/app/views/projects/new.html.erb b/app/views/projects/new.html.erb | |
| @@ -4,7 +4,7 @@ | |
| <%= f.input :name, :as => :string, :label => 'Name', :input_html => { … | |
| <%= f.input :description, :as => :text, :input_html => { :class => 'pr… | |
| <%= f.action :submit, :label => 'Create', :button_html => { :class => … | |
| - <a class="btn btn-link" href="<%= projects_path %>"rel="tooltip" title… | |
| + <a class="btn btn-link" href="<%= projects_path %>"rel="tooltip" title… | |
| <% end %> | |
| <%= set_focus('project_name') %> | |
| diff --git a/app/views/projects/show.html.erb b/app/views/projects/show.html.erb | |
| @@ -1,6 +1,6 @@ | |
| <div class="row-fluid"> | |
| <div class="span12"> | |
| - <a class="btn btn-small pull-right" href="<%= edit_project_pat… | |
| + <a class="btn btn-small pull-right" href="<%= edit_project_pat… | |
| <h1 class='title'>Project <%= @project.name %></h1> | |
| <p class='project-header'><%=h @project.description %></p> | |
| </div> | |
| @@ -16,15 +16,15 @@ | |
| <div class="span9"> | |
| <div class="row-fluid"> | |
| <div class="span2"> </div> | |
| - <div class="span2"><a href="<%= new_dialer_project_job… | |
| + <div class="span2"><a href="<%= new_dialer_project_job… | |
| <% if @boxes[:answered][:cnt] > 0 %> | |
| - <div class="span2"><a href="<%= new_analyze_project_jo… | |
| - <div class="span2"><a href="#" class="btn" rel="toolti… | |
| - <div class="span2"><a href="#" class="btn" rel="toolti… | |
| + <div class="span2"><a href="<%= new_analyze_project_jo… | |
| + <div class="span2"><a href="#" class="btn" rel="toolti… | |
| + <div class="span2"><a href="#" class="btn" rel="toolti… | |
| <% else %> | |
| - <div class="span2"><a href="#" class="btn disabled" re… | |
| - <div class="span2"><a href="#" class="btn" rel="toolti… | |
| - <div class="span2"><a href="#" class="btn disabled" re… | |
| + <div class="span2"><a href="#" class="btn disabled" re… | |
| + <div class="span2"><a href="#" class="btn" rel="toolti… | |
| + <div class="span2"><a href="#" class="btn disabled" re… | |
| <% end %> | |
| <div class="span2"> </div> | |
| </div> | |
| @@ -32,7 +32,7 @@ | |
| </div> | |
| <div class="row-fluid"> | |
| - <div class="span3 arrow-down"><i class="icon-arrow-down"></i></div> | |
| + <div class="span3 arrow-down"><i class="fa fa-arrow-down"></i></div> | |
| <div class="span9"> </div> | |
| </div> | |
| @@ -47,7 +47,7 @@ | |
| </div> | |
| <div class="row-fluid"> | |
| - <div class="span3 arrow-down"><i class="icon-arrow-down"></i></div> | |
| + <div class="span3 arrow-down"><i class="fa fa-arrow-down"></i></div> | |
| <div class="span9"> </div> | |
| </div> | |
| @@ -62,7 +62,7 @@ | |
| </div> | |
| <div class="row-fluid"> | |
| - <div class="span3 arrow-down"><i class="icon-arrow-down"></i></div> | |
| + <div class="span3 arrow-down"><i class="fa fa-arrow-down"></i></div> | |
| <div class="span9"> </div> | |
| </div> | |
| @@ -169,12 +169,12 @@ | |
| <td><%= time_ago_in_words(job.created_at) %> ago</td> | |
| <td> | |
| <% if job.task == "dialer" %> | |
| - <a class="btn" href="<%= view_results_path(job.pro… | |
| + <a class="btn" href="<%= view_results_path(job.pro… | |
| <% end %> | |
| <% if job.task == "analysis" and job.details[:scope].to_s … | |
| - <a class="btn" href="<%= view_analyze_path(job.pro… | |
| + <a class="btn" href="<%= view_analyze_path(job.pro… | |
| <% end %> | |
| - <a class="btn" href="<%= stop_job_path(job) %>" data-c… | |
| + <a class="btn" href="<%= stop_job_path(job) %>" data-c… | |
| </td> | |
| </tr> | |
| <% end %> | |
| diff --git a/app/views/providers/edit.html.erb b/app/views/providers/edit.html.… | |
| @@ -10,5 +10,5 @@ | |
| <%= f.input :lines, :as => :number, :label => 'Maximum Lines', :hint =… | |
| <%= f.action :submit, :label => 'Update', :button_html => { :class => … | |
| - <a class="btn btn-link" href="<%= providers_path %>" rel="tooltip" tit… | |
| + <a class="btn btn-link" href="<%= providers_path %>" rel="tooltip" tit… | |
| <% end %> | |
| diff --git a/app/views/providers/index.html.erb b/app/views/providers/index.htm… | |
| @@ -17,7 +17,7 @@ | |
| <% @providers.each do |provider| %> | |
| <tr> | |
| <td> | |
| - <i class="icon-<%= provider.enabled ? "ok" : "remove" %>"></i> | |
| + <i class="fa fa-<%= provider.enabled ? "ok" : "remove" %>"></i> | |
| </td> | |
| <td><%= provider.name %></td> | |
| <td><%= provider.host %></td> | |
| @@ -25,8 +25,8 @@ | |
| <td><%= provider.user %></td> | |
| <td><%= provider.lines %></td> | |
| <td> | |
| - <a class="btn" href="<%= edit_provider_path(provider) %>"rel="tool… | |
| - <a class="btn" href="<%= provider_path(provider) %>" data-confirm=… | |
| + <a class="btn" href="<%= edit_provider_path(provider) %>"rel="tool… | |
| + <a class="btn" href="<%= provider_path(provider) %>" data-confirm=… | |
| </td> | |
| </tr> | |
| <% end %> | |
| @@ -37,4 +37,4 @@ | |
| <% end %> | |
| <br/> | |
| -<a class="btn" href="<%= new_provider_path %>"><i class="icon-plus"></i> Add P… | |
| +<a class="btn" href="<%= new_provider_path %>"><i class="fa fa-plus"></i> Add … | |
| diff --git a/app/views/providers/new.html.erb b/app/views/providers/new.html.erb | |
| @@ -9,5 +9,5 @@ | |
| <%= f.input :lines, :as => :number, :label => 'Maximum Lines', :hint =… | |
| <%= f.action :submit, :label => 'Create', :button_html => { :class => … | |
| - <a class="btn btn-link" href="<%= providers_path %>" rel="tooltip" tit… | |
| + <a class="btn btn-link" href="<%= providers_path %>" rel="tooltip" tit… | |
| <% end %> | |
| diff --git a/app/views/shared/_call_signal.html.erb b/app/views/shared/_call_si… | |
| @@ -3,8 +3,8 @@ | |
| <% if call.fprint and call.fprint.length > 0 and call != @result %> | |
| <% if @job_id %> | |
| - <a class="btn" href="<%= view_matches_path(call.project_id, call.job_i… | |
| + <a class="btn" href="<%= view_matches_path(call.project_id, call.job_i… | |
| <% else %> | |
| - <a class="btn" href="<%= view_matches_project_path(call.project_id, ca… | |
| + <a class="btn" href="<%= view_matches_project_path(call.project_id, ca… | |
| <% end%> | |
| <% end %> | |
| diff --git a/app/views/shared/graphs/_lines_by_type.html.erb b/app/views/shared… | |
| @@ -18,7 +18,7 @@ end | |
| chart: { | |
| renderTo: '<%= graph_id %>', | |
| type: 'bar', | |
| - height: 150 | |
| + height: 250 | |
| }, | |
| title: { | |
| text: 'Line Types' | |
| diff --git a/bin/iaxrecord.rb b/bin/iaxrecord.rb | |
| @@ -11,7 +11,7 @@ trap("SIGINT") { stop() } | |
| trap("SIGTERM") { stop() } | |
| require 'rubygems' | |
| -require "rex/proto/iax2" | |
| +require "warvox/proto/iax2" | |
| require "optparse" | |
| parser = OptionParser.new | |
| @@ -65,7 +65,7 @@ if not (opts[:server_host] and opts[:username] and opts[:pass… | |
| end | |
| -cli = Rex::Proto::IAX2::Client.new(opts) | |
| +cli = WarVOX::Proto::IAX2::Client.new(opts) | |
| reg = cli.create_call | |
| r = reg.register | |
| diff --git a/bin/resetpw b/bin/resetpw | |
| @@ -36,7 +36,7 @@ def generate_password | |
| end | |
| -user = uname ? User.find_by_login(uname) : User.find(:first) | |
| +user = uname ? User.find_by_login(uname) : User.first | |
| if uname and not user | |
| $stderr.puts "[-] User #{uname} was not found" | |
| exit(1) | |
| diff --git a/bin/worker.rb b/bin/worker.rb | |
| @@ -30,7 +30,7 @@ def stop | |
| @task.stop() rescue nil | |
| end | |
| if @job | |
| - Job.update_all({ :status => 'stopped', :completed_at => Time.n… | |
| + Job.where(id: @job_id).update_all({ status: 'stopped', complet… | |
| end | |
| exit(0) | |
| end | |
| @@ -51,7 +51,7 @@ trap("SIGTERM") { stop() } | |
| jid = jid.to_i | |
| -@job = Job.where(:id => jid).first | |
| +@job = Job.where(id: jid).first | |
| unless @job | |
| $stderr.puts "Error: Specified job not found" | |
| @@ -61,7 +61,7 @@ end | |
| $0 = "warvox worker: #{jid} " | |
| -Job.update_all({ :started_at => Time.now.utc, :status => 'running'}, { :id => … | |
| +Job.where(id: @job.id).update_all({ started_at: Time.now.utc, status: 'running… | |
| args = Marshal.load(@job.args) rescue {} | |
| @@ -78,7 +78,7 @@ when 'analysis' | |
| @task = WarVOX::Jobs::Analysis.new(@job.id, args) | |
| @task.start | |
| else | |
| - Job.update_all({ :error => 'unsupported', :status => 'error' }, { :id … | |
| + Job.where(id: @job.id).update_all({ error: 'unsupported', status: 'err… | |
| end | |
| @job.update_progress(100) | |
| @@ -87,5 +87,5 @@ rescue ::SignalException, ::SystemExit | |
| raise $! | |
| rescue ::Exception => e | |
| WarVOX::Log.warn("Worker #{@job.id} #{@job.task} threw an exception: #… | |
| - Job.update_all({ :error => "Exception: #{e.class} #{e}", :status => 'e… | |
| + Job.where(id: @job.id).update_all({ error: "Exception: #{e.class} #{e}… | |
| end | |
| diff --git a/bin/worker_manager.rb b/bin/worker_manager.rb | |
| @@ -95,7 +95,7 @@ def clear_completed_jobs | |
| @jobs = @jobs.reject{|x| dead_pids.include?( x[:pid] ) } | |
| # Mark failed/crashed jobs as completed | |
| - Job.update_all({ :completed_at => Time.now.utc }, { :id => dead_jids, … | |
| + Job.where(id: dead_jids, completed_at: nil).update_all({completed_at: … | |
| end | |
| def clear_stale_jobs | |
| @@ -131,21 +131,21 @@ def clear_stale_jobs | |
| # Mark these jobs as abandoned | |
| if dead.length > 0 | |
| WarVOX::Log.debug("Worker Manager is marking #{dead.length} jo… | |
| - Job.update_all({ :locked_by => nil, :status => 'abandoned' }, … | |
| + Job.where(:id => dead).update_all({locked_by: nil, status: 'ab… | |
| end | |
| end | |
| def schedule_submitted_jobs | |
| loop do | |
| # Look for a candidate job with no current owner | |
| - j = Job.where(:status => 'submitted', :locked_by => nil).limi… | |
| + j = Job.where(status: 'submitted', locked_by: nil).limit(1).f… | |
| return unless j | |
| # Try to get a lock on this job | |
| - Job.update_all({:locked_by => @cookie, :locked_at => Time.now.… | |
| + Job.where(id: j.id, locked_by: nil).update_all({locked_by: @co… | |
| # See if we actually got the lock | |
| - j = Job.where(:id => j.id, :status => 'scheduled', :locked_by… | |
| + j = Job.where(id: j.id, status: 'scheduled', locked_by: @cook… | |
| # Try again if we lost the race, | |
| next unless j | |
| diff --git a/config/environments/development.rb b/config/environments/developme… | |
| @@ -27,15 +27,14 @@ Web::Application.configure do | |
| config.log_level = :debug | |
| - # Log the query plan for queries taking more than this (works | |
| - # with SQLite, MySQL, and PostgreSQL) | |
| - config.active_record.auto_explain_threshold_in_seconds = 0.75 | |
| - | |
| # Do not compress assets | |
| config.assets.compress = false | |
| # Expands the lines which load the assets | |
| config.assets.debug = false | |
| + # Eager load | |
| + config.eager_load = false | |
| + | |
| config.serve_static_assets = true | |
| end | |
| diff --git a/config/environments/production.rb b/config/environments/production… | |
| @@ -9,7 +9,7 @@ Web::Application.configure do | |
| config.action_controller.perform_caching = true | |
| # Disable Rails's static asset server (Apache or nginx will already do this) | |
| - config.serve_static_assets = true | |
| + config.serve_static_files = true | |
| # Compress JavaScripts and CSS | |
| config.assets.compress = false | |
| @@ -61,7 +61,7 @@ Web::Application.configure do | |
| # Send deprecation notices to registered listeners | |
| config.active_support.deprecation = :notify | |
| - # Log the query plan for queries taking more than this (works | |
| - # with SQLite, MySQL, and PostgreSQL) | |
| - # config.active_record.auto_explain_threshold_in_seconds = 0.5 | |
| + # Eager load | |
| + config.eager_load = true | |
| + | |
| end | |
| diff --git a/config/environments/test.rb b/config/environments/test.rb | |
| @@ -32,4 +32,8 @@ Web::Application.configure do | |
| # Print deprecation notices to the stderr | |
| config.active_support.deprecation = :stderr | |
| + | |
| + # Eager load | |
| + config.eager_load = false | |
| + | |
| end | |
| diff --git a/config/initializers/warvox.rb b/config/initializers/warvox.rb | |
| @@ -1,3 +1,3 @@ | |
| # Extend PostgreSQL | |
| -require 'postgres_ext' | |
| +# require 'postgres_ext' | |
| diff --git a/config/locales/en.bootstrap.yml b/config/locales/en.bootstrap.yml | |
| @@ -0,0 +1,23 @@ | |
| +# Sample localization file for English. Add more files in this directory for o… | |
| +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for s… | |
| + | |
| +en: | |
| + breadcrumbs: | |
| + application: | |
| + root: "Index" | |
| + pages: | |
| + pages: "Pages" | |
| + helpers: | |
| + actions: "Actions" | |
| + links: | |
| + back: "Back" | |
| + cancel: "Cancel" | |
| + confirm: "Are you sure?" | |
| + destroy: "Delete" | |
| + new: "New" | |
| + edit: "Edit" | |
| + titles: | |
| + edit: "Edit %{model}" | |
| + save: "Save %{model}" | |
| + new: "New %{model}" | |
| + delete: "Delete %{model}" | |
| diff --git a/config/routes.rb b/config/routes.rb | |
| @@ -1,44 +1,44 @@ | |
| Web::Application.routes.draw do | |
| - match "login" => "user_sessions#new", :as => "login" | |
| - match "logout" => "user_sessions#destroy", :as => "logout" | |
| + get "login" => "user_sessions#new", :as => "login" | |
| + get "logout" => "user_sessions#destroy", :as => "logout" | |
| resources :user_sessions | |
| - match '/projects/:project_id/all' => 'projects#index', :… | |
| + get '/projects/:project_id/all' => 'projects#index', :as… | |
| - match '/jobs/dial' => 'jobs#new_dialer', :as => :new_dialer_job | |
| - match '/projects/:project_id/jobs/dial' => 'jobs#new_dialer', … | |
| - match '/jobs/dialer' => 'jobs#dialer', :as => :dialer_job | |
| + get '/jobs/dial' => 'jobs#new_dialer', :as => :new_dialer_job | |
| + get '/projects/:project_id/jobs/dial' => 'jobs#new_dialer', :a… | |
| + put '/jobs/dialer' => 'jobs#dialer', :as => :dialer_job | |
| - match '/jobs/analyze' => 'jobs#new_analyze', :as => :new_analyze_j… | |
| - match '/projects/:project_id/jobs/analyze' => 'jobs#new_analyze', … | |
| - match '/jobs/analyzer' => 'jobs#analyzer', :as => :analyzer_job | |
| + get '/jobs/analyze' => 'jobs#new_analyze', :as => :new_analyze_job | |
| + get '/projects/:project_id/jobs/analyze' => 'jobs#new_analyze', :a… | |
| + put '/jobs/analyzer' => 'jobs#analyzer', :as => :analyzer_job | |
| - match '/projects/:project_id/jobs/identify' => 'jobs#new_identify', … | |
| - match '/jobs/identifier' => 'jobs#identifier', :as => :identifier_job | |
| + get '/projects/:project_id/jobs/identify' => 'jobs#new_identify', :a… | |
| + put '/jobs/identifier' => 'jobs#identifier', :as => :identifier_job | |
| - match '/jobs/:id/stop' => 'jobs#stop', :as => :stop_job | |
| - match '/jobs/:id/calls/purge' => "jobs#purge_calls", :as => :purge_calls_j… | |
| + get '/jobs/:id/stop' => 'jobs#stop', :as => :stop_job | |
| + post '/jobs/:id/calls/purge' => "jobs#purge_calls", :as => :purge_calls_job | |
| - match '/projects/:project_id/calls/purge' => "jobs#purge_calls", :as => :p… | |
| + post '/projects/:project_id/calls/purge' => "jobs#purge_calls", :as => :pu… | |
| - match '/projects/:project_id/scans' => 'jobs#results', :as => :res… | |
| - match '/projects/:project_id/scans/:id' => 'jobs#view_results', :as =>… | |
| - match '/projects/:project_id/scans/:id/analyze' => 'jobs#analyze_job', :… | |
| - match '/projects/:project_id/scans/:id/reanalyze' => 'jobs#reanalyze_job',… | |
| + get '/projects/:project_id/scans' => 'jobs#results', :as => :resul… | |
| + get '/projects/:project_id/scans/:id' => 'jobs#view_results', :as => :… | |
| + get '/projects/:project_id/scans/:id/analyze' => 'jobs#analyze_job', :as… | |
| + get '/projects/:project_id/scans/:id/reanalyze' => 'jobs#reanalyze_job', :… | |
| - match '/projects/:project_id/calls/analyze' => 'jobs#analyze_project',… | |
| - match '/projects/:project_id/calls/identify' => 'jobs#identify_project'… | |
| + put '/projects/:project_id/calls/analyze' => 'jobs#analyze_project', :… | |
| + put '/projects/:project_id/calls/identify' => 'jobs#identify_project', … | |
| - match '/projects/:project_id/analyze' => 'analyze#index', :as =>… | |
| - match '/call/:result_id.:type' => 'analyze#resource', :as … | |
| - match '/projects/:project_id/analyze/:id/view' => 'analyze#view', :as => … | |
| + get '/projects/:project_id/analyze' => 'analyze#index', :as => :… | |
| + get '/call/:result_id/:rtype' => 'analyze#resource', :as =… | |
| + get '/projects/:project_id/analyze/:id/view' => 'analyze#view', :as => :v… | |
| - match '/projects/:project_id/analyze/:job_id/:call_id/matches' => 'analyz… | |
| - match '/projects/:project_id/analyze/:call_id/matches' => 'analyze#view_m… | |
| + get '/projects/:project_id/analyze/:job_id/:call_id/matches' => 'analyze#… | |
| + get '/projects/:project_id/analyze/:call_id/matches' => 'analyze#view_mat… | |
| resources :settings | |
| resources :providers | |
| @@ -47,9 +47,9 @@ Web::Application.routes.draw do | |
| resources :jobs | |
| resources :calls | |
| - match '/about' => 'home#about', :as => :about | |
| - match '/help' => 'home#help', :as => :help | |
| - match '/check' => 'home#check', :as => :check | |
| + get '/about' => 'home#about', :as => :about | |
| + get '/help' => 'home#help', :as => :help | |
| + get '/check' => 'home#check', :as => :check | |
| root :to => "projects#index" | |
| end | |
| diff --git a/db/schema.rb b/db/schema.rb | |
| @@ -1,189 +0,0 @@ | |
| -# encoding: UTF-8 | |
| -# This file is auto-generated from the current state of the database. Instead | |
| -# of editing this file, please use the migrations feature of Active Record to | |
| -# incrementally modify your database, and then regenerate this schema definiti… | |
| -# | |
| -# Note that this schema.rb definition is the authoritative source for your | |
| -# database schema. If you need to create the application database on another | |
| -# system, you should be using db:schema:load, not running all the migrations | |
| -# from scratch. The latter is a flawed and unsustainable approach (the more mi… | |
| -# you'll amass, the slower it'll run and the greater likelihood for issues). | |
| -# | |
| -# It's strongly recommended to check this file into your version control syste… | |
| - | |
| -ActiveRecord::Schema.define(:version => 20130113004653) do | |
| - | |
| - add_extension "intarray" | |
| - | |
| - create_table "call_media", :force => true do |t| | |
| - t.integer "call_id", :null => false | |
| - t.integer "project_id", :null => false | |
| - t.binary "audio" | |
| - t.binary "mp3" | |
| - t.binary "png_big" | |
| - t.binary "png_big_dots" | |
| - t.binary "png_big_freq" | |
| - t.binary "png_sig" | |
| - t.binary "png_sig_freq" | |
| - end | |
| - | |
| - add_index "call_media", ["call_id"], :name => "index_call_media_on_call_id" | |
| - add_index "call_media", ["project_id"], :name => "index_call_media_on_projec… | |
| - | |
| - create_table "calls", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.text "number", :null => false | |
| - t.integer "project_id", :null => false | |
| - t.integer "job_id", :null => false | |
| - t.integer "provider_id", :null => false | |
| - t.boolean "answered" | |
| - t.boolean "busy" | |
| - t.text "error" | |
| - t.integer "audio_length" | |
| - t.integer "ring_length" | |
| - t.text "caller_id" | |
| - t.integer "analysis_job_id" | |
| - t.datetime "analysis_started_at" | |
| - t.datetime "analysis_completed_at" | |
| - t.float "peak_freq" | |
| - t.text "peak_freq_data" | |
| - t.text "line_type" | |
| - t.integer "fprint", :array => true | |
| - end | |
| - | |
| - add_index "calls", ["job_id"], :name => "index_calls_on_job_id" | |
| - add_index "calls", ["number"], :name => "index_calls_on_number" | |
| - add_index "calls", ["provider_id"], :name => "index_calls_on_provider_id" | |
| - | |
| - create_table "jobs", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.integer "project_id", :null => false | |
| - t.string "locked_by" | |
| - t.datetime "locked_at" | |
| - t.datetime "started_at" | |
| - t.datetime "completed_at" | |
| - t.string "created_by" | |
| - t.string "task", :null => false | |
| - t.binary "args" | |
| - t.string "status" | |
| - t.text "error" | |
| - t.integer "progress", :default => 0 | |
| - end | |
| - | |
| - add_index "jobs", ["project_id"], :name => "index_jobs_on_project_id" | |
| - | |
| - create_table "line_attributes", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.integer "line_id", :null => false | |
| - t.integer "project_id", :null => false | |
| - t.text "name", :null => false | |
| - t.binary "value", :null => false | |
| - t.string "content_type", :default => "text" | |
| - end | |
| - | |
| - add_index "line_attributes", ["line_id"], :name => "index_line_attributes_on… | |
| - add_index "line_attributes", ["project_id"], :name => "index_line_attributes… | |
| - | |
| - create_table "lines", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.text "number", :null => false | |
| - t.integer "project_id", :null => false | |
| - t.text "line_type" | |
| - t.text "notes" | |
| - end | |
| - | |
| - add_index "lines", ["number"], :name => "index_lines_on_number" | |
| - add_index "lines", ["project_id"], :name => "index_lines_on_project_id" | |
| - | |
| - create_table "projects", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.text "name", :null => false | |
| - t.text "description" | |
| - t.text "included" | |
| - t.text "excluded" | |
| - t.string "created_by" | |
| - end | |
| - | |
| - create_table "providers", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.text "name", :null => false | |
| - t.text "host", :null => false | |
| - t.integer "port", :null => false | |
| - t.text "user" | |
| - t.text "pass" | |
| - t.integer "lines", :default => 1, :null => false | |
| - t.boolean "enabled", :default => true | |
| - end | |
| - | |
| - create_table "reportable_cache", :force => true do |t| | |
| - t.string "model_name", :limit => 100, :null => fa… | |
| - t.string "report_name", :limit => 100, :null => fa… | |
| - t.string "grouping", :limit => 10, :null => fa… | |
| - t.string "aggregation", :limit => 10, :null => fa… | |
| - t.string "conditions", :limit => 100, :null => fa… | |
| - t.float "value", :default => 0.0, :null => fa… | |
| - t.datetime "reporting_period", :null => fa… | |
| - t.datetime "created_at", :null => fa… | |
| - t.datetime "updated_at", :null => fa… | |
| - end | |
| - | |
| - add_index "reportable_cache", ["model_name", "report_name", "grouping", "agg… | |
| - add_index "reportable_cache", ["model_name", "report_name", "grouping", "agg… | |
| - | |
| - create_table "settings", :force => true do |t| | |
| - t.string "var", :null => false | |
| - t.text "value" | |
| - t.integer "thing_id" | |
| - t.string "thing_type", :limit => 30 | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - end | |
| - | |
| - add_index "settings", ["thing_type", "thing_id", "var"], :name => "index_set… | |
| - | |
| - create_table "signature_fp", :force => true do |t| | |
| - t.integer "signature_id", :null => false | |
| - t.integer "fprint", :array => true | |
| - end | |
| - | |
| - add_index "signature_fp", ["signature_id"], :name => "index_signature_fp_on_… | |
| - | |
| - create_table "signatures", :force => true do |t| | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.text "name", :null => false | |
| - t.string "source" | |
| - t.text "description" | |
| - t.string "category" | |
| - t.string "line_type" | |
| - t.integer "risk" | |
| - end | |
| - | |
| - create_table "users", :force => true do |t| | |
| - t.string "login", :null => false | |
| - t.string "email" | |
| - t.string "crypted_password", :null => false | |
| - t.string "password_salt", :null => false | |
| - t.string "persistence_token", :null => false | |
| - t.string "single_access_token", :null => false | |
| - t.string "perishable_token", :null => false | |
| - t.integer "login_count", :default => 0, :null => false | |
| - t.integer "failed_login_count", :default => 0, :null => false | |
| - t.datetime "last_request_at" | |
| - t.datetime "current_login_at" | |
| - t.datetime "last_login_at" | |
| - t.string "current_login_ip" | |
| - t.string "last_login_ip" | |
| - t.datetime "created_at", :null => false | |
| - t.datetime "updated_at", :null => false | |
| - t.boolean "enabled", :default => true | |
| - t.boolean "admin", :default => true | |
| - end | |
| - | |
| -end | |
| diff --git a/lib/warvox/jobs/analysis.rb b/lib/warvox/jobs/analysis.rb | |
| @@ -6,7 +6,7 @@ class Analysis < Base | |
| require 'tempfile' | |
| require 'open3' | |
| - # This is required by the verify_instal.rb script, so dont error | |
| + # This is required by the verify_install.rb script, so dont error | |
| # out if the gem is not yet available | |
| begin | |
| require 'kissfft' | |
| @@ -142,16 +142,16 @@ class Analysis < Base | |
| def update_progress(pct) | |
| ::ActiveRecord::Base.connection_pool.with_connection { | |
| - Job.update_all({ :progress => pct }, { :id => @job_id … | |
| + Job.where(id: @job_id).update_all(progress: pct) | |
| } | |
| end | |
| def run_analyze_call(cid, jid) | |
| - dr = Call.find(cid, :include => :job) | |
| + dr = Call.includes(:job).where(id: cid).first | |
| dr.analysis_started_at = Time.now | |
| dr.analysis_job_id = jid | |
| - dr.save | |
| + dr.save! | |
| WarVOX::Log.debug("Worker processing audio for #{dr.number}...… | |
| diff --git a/lib/warvox/jobs/dialer.rb b/lib/warvox/jobs/dialer.rb | |
| @@ -211,7 +211,7 @@ class Dialer < Base | |
| def update_progress(pct) | |
| ::ActiveRecord::Base.connection_pool.with_connection { | |
| - Job.update_all({ :progress => pct }, { :id => @job_id … | |
| + Job.where(id: @job_id).update_all(progress: pct) | |
| } | |
| end | |
| diff --git a/lib/warvox/proto/iax2.rb b/lib/warvox/proto/iax2.rb | |
| @@ -0,0 +1,2 @@ | |
| +# -*- coding: binary -*- | |
| +require 'warvox/proto/iax2/client' | |
| diff --git a/lib/warvox/proto/iax2/call.rb b/lib/warvox/proto/iax2/call.rb | |
| @@ -0,0 +1,345 @@ | |
| +# -*- coding: binary -*- | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| +class Call | |
| + | |
| + attr_accessor :client | |
| + attr_accessor :oseq, :iseq | |
| + attr_accessor :scall, :dcall | |
| + attr_accessor :codec, :state | |
| + attr_accessor :ring_start, :ring_finish | |
| + attr_accessor :itime | |
| + attr_accessor :queue | |
| + attr_accessor :audio_hook | |
| + attr_accessor :audio_buff | |
| + attr_accessor :time_limit | |
| + attr_accessor :busy | |
| + | |
| + attr_accessor :caller_name | |
| + attr_accessor :caller_number | |
| + attr_accessor :dtmf | |
| + | |
| + | |
| + def initialize(client, src_id) | |
| + self.client = client | |
| + self.scall = src_id | |
| + self.dcall = 0 | |
| + self.iseq = 0 | |
| + self.oseq = 0 | |
| + self.state = nil | |
| + | |
| + self.itime = ::Time.now | |
| + self.queue = ::Queue.new | |
| + | |
| + self.audio_buff = [] | |
| + | |
| + self.busy = false | |
| + self.dtmf = '' | |
| + end | |
| + | |
| + | |
| + def dprint(msg) | |
| + self.client.dprint(msg) | |
| + end | |
| + | |
| + def wait_for(*stypes) | |
| + begin | |
| + ::Timeout.timeout( IAX_DEFAULT_TIMEOUT ) do | |
| + while (res = self.queue.pop ) | |
| + if stypes.include?(res[1]) | |
| + return res | |
| + end | |
| + end | |
| + end | |
| + rescue ::Timeout::Error | |
| + return nil | |
| + end | |
| + end | |
| + | |
| + # Register with the IAX endpoint | |
| + def register | |
| + self.client.send_regreq(self) | |
| + res = wait_for( IAX_SUBTYPE_REGAUTH, IAX_SUBTYPE_REGREJ ) | |
| + return if not res | |
| + | |
| + if res[1] == IAX_SUBTYPE_REGREJ | |
| + reason = res[2][IAX_IE_REGREJ_CAUSE] || "Unknown Reason" | |
| + dprint("REGREJ: #{reason}") | |
| + # Acknowledge the REGREJ | |
| + self.client.send_ack(self) | |
| + return | |
| + end | |
| + | |
| + chall = nil | |
| + | |
| + # Look for IAX_AUTH_MD5 (2) as an available auth method | |
| + if res[2][14].unpack("n")[0] & 2 <= 0 | |
| + dprint("REGAUTH: MD5 authentication is not enabled on the server") | |
| + return | |
| + end | |
| + | |
| + if res[2][IAX_IE_CHALLENGE_DATA] | |
| + self.dcall = res[0][0] | |
| + chall = res[2][IAX_IE_CHALLENGE_DATA] | |
| + end | |
| + | |
| + if chall.nil? | |
| + dprint("REGAUTH: No challenge data received") | |
| + return | |
| + end | |
| + | |
| + self.client.send_regreq_chall_response(self, chall) | |
| + res = wait_for( IAX_SUBTYPE_REGACK, IAX_SUBTYPE_REGREJ ) | |
| + return if not res | |
| + | |
| + if res[1] == IAX_SUBTYPE_REGREJ | |
| + reason = res[2][IAX_IE_REGREJ_CAUSE] || "Unknown Reason" | |
| + dprint("REGREJ: #{reason}") | |
| + return | |
| + end | |
| + | |
| + if res[2][IAX_IE_APPARENT_ADDR] | |
| + r_fam, r_port, r_addr = res[2][IAX_IE_APPARENT_ADDR].unpack('nnA4') | |
| + r_addr = r_addr.unpack("C*").map{|x| x.to_s }.join(".") | |
| + dprint("REGACK: Registered from address #{r_addr}:#{r_port}") | |
| + end | |
| + | |
| + # Acknowledge the REGACK | |
| + self.client.send_ack(self) | |
| + | |
| + self.state = :registered | |
| + | |
| + true | |
| + end | |
| + | |
| + def dial(number) | |
| + self.client.send_new(self, number) | |
| + res = wait_for(IAX_SUBTYPE_AUTHREQ, IAX_SUBTYPE_ACCEPT) | |
| + return if not res | |
| + | |
| + # Handle authentication if its requested | |
| + if res[1] == IAX_SUBTYPE_AUTHREQ | |
| + chall = nil | |
| + | |
| + # Look for IAX_AUTH_MD5 (2) as an available auth method | |
| + if res[2][14].unpack("n")[0] & 2 <= 0 | |
| + dprint("REGAUTH: MD5 authentication is not enabled on the server") | |
| + return | |
| + end | |
| + | |
| + if res[2][IAX_IE_CHALLENGE_DATA] | |
| + self.dcall = res[0][0] | |
| + chall = res[2][IAX_IE_CHALLENGE_DATA] | |
| + end | |
| + | |
| + if chall.nil? | |
| + dprint("REGAUTH: No challenge data received") | |
| + return | |
| + end | |
| + | |
| + self.client.send_authrep_chall_response(self, chall) | |
| + res = wait_for( IAX_SUBTYPE_ACCEPT) | |
| + return if not res | |
| + end | |
| + | |
| + self.codec = res[2][IAX_IE_DESIRED_CODEC].unpack("N")[0] | |
| + self.state = :ringing | |
| + self.ring_start = ::Time.now.to_i | |
| + self.client.send_ack(self) | |
| + true | |
| + end | |
| + | |
| + def hangup | |
| + self.client.send_hangup(self) | |
| + self.state = :hangup | |
| + true | |
| + end | |
| + | |
| + def ring_time | |
| + (self.ring_finish || Time.now).to_i - self.ring_start.to_i | |
| + end | |
| + | |
| + def timestamp | |
| + (( ::Time.now - self.itime) * 1000.0 ).to_i & 0xffffffff | |
| + end | |
| + | |
| + def process_elements(data,off=0) | |
| + res = {} | |
| + while( off < data.length ) | |
| + ie_type = data[off ,1].unpack("C")[0] | |
| + ie_len = data[off + 1,2].unpack("C")[0] | |
| + res[ie_type] = data[off + 2, ie_len] | |
| + off += ie_len + 2 | |
| + end | |
| + res | |
| + end | |
| + | |
| + # Handling incoming control packets | |
| + # TODO: Enforce sequence order to prevent duplicates from breaking our state | |
| + def handle_control(pkt) | |
| + src_call, dst_call, tstamp, out_seq, inp_seq, itype = pkt.unpack('nnNCCC') | |
| + | |
| + # Scrub the high bits out of the call IDs | |
| + src_call ^= 0x8000 if (src_call & 0x8000 != 0) | |
| + dst_call ^= 0x8000 if (dst_call & 0x8000 != 0) | |
| + | |
| + phdr = [ src_call, dst_call, tstamp, out_seq, inp_seq, itype ] | |
| + | |
| + info = nil | |
| + stype = pkt[11,1].unpack("C")[0] | |
| + info = process_elements(pkt, 12) if [IAX_TYPE_IAX, IAX_TYPE_CONTROL].incl… | |
| + | |
| + if dst_call != self.scall | |
| + dprint("Incoming packet to inactive call: #{dst_call} vs #{self.scall}: … | |
| + return | |
| + end | |
| + | |
| + # Increment the received sequence number | |
| + self.iseq = (self.iseq + 1) & 0xff | |
| + | |
| + if self.state == :hangup | |
| + dprint("Packet received after hangup, replying with invalid") | |
| + self.client.send_invalid(self) | |
| + return | |
| + end | |
| + | |
| + # Technically these all require an ACK reply | |
| + # NEW, HANGUP, REJECT, ACCEPT, PONG, AUTHREP, REGREL, REGACK, REGREJ, TXREL | |
| + | |
| + case itype | |
| + when IAX_TYPE_DTMF_BEGIN | |
| + self.dprint("DTMF BEG: #{pkt[11,1]}") | |
| + self.dtmf << pkt[11,1] | |
| + | |
| + when IAX_TYPE_DTMF_END | |
| + self.dprint("DTMF END: #{pkt[11,1]}") | |
| + | |
| + when IAX_TYPE_CONTROL | |
| + case stype | |
| + when IAX_CTRL_HANGUP | |
| + dprint("HANGUP") | |
| + self.client.send_ack(self) | |
| + self.state = :hangup | |
| + | |
| + when IAX_CTRL_RINGING | |
| + dprint("RINGING") | |
| + self.client.send_ack(self) | |
| + | |
| + when IAX_CTRL_BUSY | |
| + dprint("BUSY") | |
| + self.busy = true | |
| + self.state = :hangup | |
| + self.client.send_ack(self) | |
| + | |
| + when IAX_CTRL_ANSWER | |
| + dprint("ANSWER") | |
| + if self.state == :ringing | |
| + self.state = :answered | |
| + self.ring_finish = ::Time.now.to_i | |
| + end | |
| + self.client.send_ack(self) | |
| + | |
| + when IAX_CTRL_PROGRESS | |
| + dprint("PROGRESS") | |
| + | |
| + when IAX_CTRL_PROCEED | |
| + dprint("PROCEED") | |
| + | |
| + when 255 | |
| + dprint("STOP SOUNDS") | |
| + end | |
| + # Acknowledge all control packets | |
| + # self.client.send_ack(self) | |
| + | |
| + when IAX_TYPE_IAX | |
| + | |
| + dprint( ["RECV", phdr, stype, info].inspect ) | |
| + case stype | |
| + when IAX_SUBTYPE_HANGUP | |
| + self.state = :hangup | |
| + self.client.send_ack(self) | |
| + when IAX_SUBTYPE_LAGRQ | |
| + # Lagrps echo the timestamp | |
| + self.client.send_lagrp(self, tstamp) | |
| + when IAX_SUBTYPE_ACK | |
| + # Nothing to do here | |
| + when IAX_SUBTYPE_PING | |
| + # Pongs echo the timestamp | |
| + self.client.send_pong(self, tstamp) | |
| + when IAX_SUBTYPE_PONG | |
| + self.client.send_ack(self) | |
| + else | |
| + dprint( ["RECV-QUEUE", phdr, stype, info].inspect ) | |
| + self.queue.push( [phdr, stype, info ] ) | |
| + end | |
| + | |
| + when IAX_TYPE_VOICE | |
| + v_codec = stype | |
| + if self.state == :answered | |
| + handle_audio(pkt) | |
| + end | |
| + self.client.send_ack(self) | |
| + | |
| + when nil | |
| + dprint("Invalid control packet: #{pkt.unpack("H*")[0]}") | |
| + end | |
| + end | |
| + | |
| + | |
| + # Encoded audio from the client | |
| + def handle_audio(pkt) | |
| + # Ignore audio received before the call is answered (ring ring) | |
| + return if self.state != :answered | |
| + | |
| + # Extract the data from the packet (full or mini) | |
| + data = audio_packet_data(pkt) | |
| + | |
| + # Decode the data into linear PCM frames | |
| + buff = decode_audio_frame(data) | |
| + | |
| + # Call the caller-provided hook if its exists | |
| + if self.audio_hook | |
| + self.audio_buff(buff) | |
| + # Otherwise append the frame to the buffer | |
| + else | |
| + self.audio_buff << buff | |
| + end | |
| + end | |
| + | |
| + def each_audio_frame(&block) | |
| + self.audio_buff.each do |frame| | |
| + block.call(frame) | |
| + end | |
| + end | |
| + | |
| + def decode_audio_frame(buff) | |
| + case self.codec | |
| + | |
| + # Convert u-law into signed PCM | |
| + when IAX_CODEC_G711_MULAW | |
| + WarVOX::Proto::IAX2::Codecs::MuLaw.decode(buff) | |
| + | |
| + # Convert a-law into signed PCM | |
| + when IAX_CODEC_G711_ALAW | |
| + WarVOX::Proto::IAX2::Codecs::ALaw.decode(buff) | |
| + | |
| + # Linear little-endian signed PCM is our native format | |
| + when IAX_CODEC_LINEAR_PCM | |
| + buff | |
| + | |
| + # Unsupported codec, return empty | |
| + else | |
| + dprint("UNKNOWN CODEC: #{self.codec.inspect}") | |
| + '' | |
| + end | |
| + end | |
| + | |
| + def audio_packet_data(pkt) | |
| + (pkt[0,1].unpack("C")[0] & 0x80 == 0) ? pkt[4,pkt.length-4] : pkt[12,pkt.l… | |
| + end | |
| + | |
| +end | |
| +end | |
| +end | |
| +end | |
| diff --git a/lib/warvox/proto/iax2/client.rb b/lib/warvox/proto/iax2/client.rb | |
| @@ -0,0 +1,219 @@ | |
| +# -*- coding: binary -*- | |
| +require 'warvox/proto/iax2/constants' | |
| +require 'warvox/proto/iax2/codecs' | |
| +require 'warvox/proto/iax2/call' | |
| + | |
| +require 'rex/socket' | |
| +require 'thread' | |
| +require 'digest/md5' | |
| +require 'timeout' | |
| + | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| +class Client | |
| + | |
| + attr_accessor :caller_number, :caller_name, :server_host, :server_port | |
| + attr_accessor :username, :password | |
| + attr_accessor :sock, :monitor | |
| + attr_accessor :src_call_idx | |
| + attr_accessor :debugging | |
| + attr_accessor :calls | |
| + | |
| + def initialize(uopts={}) | |
| + opts = { | |
| + :caller_number => '15555555555', | |
| + :caller_name => '', | |
| + :server_port => IAX2_DEFAULT_PORT, | |
| + :context => { } | |
| + }.merge(uopts) | |
| + | |
| + self.caller_name = opts[:caller_name] | |
| + self.caller_number = opts[:caller_number] | |
| + self.server_host = opts[:server_host] | |
| + self.server_port = opts[:server_port] | |
| + self.username = opts[:username] | |
| + self.password = opts[:password] | |
| + self.debugging = opts[:debugging] | |
| + | |
| + self.sock = Rex::Socket::Udp.create( | |
| + 'PeerHost' => self.server_host, | |
| + 'PeerPort' => self.server_port, | |
| + 'Context' => opts[:context] | |
| + ) | |
| + | |
| + self.monitor = ::Thread.new { monitor_socket } | |
| + | |
| + self.src_call_idx = 0 | |
| + self.calls = {} | |
| + | |
| + end | |
| + | |
| + def shutdown | |
| + self.monitor.kill rescue nil | |
| + end | |
| + | |
| + def create_call | |
| + cid = allocate_call_id() | |
| + self.calls[ cid ] = IAX2::Call.new(self, cid) | |
| + end | |
| + | |
| + # | |
| + # Transport | |
| + # | |
| + | |
| + def monitor_socket | |
| + while true | |
| + begin | |
| + pkt, src = self.sock.recvfrom(65535) | |
| + next if not pkt | |
| + | |
| + # Find the matching call object | |
| + mcall = matching_call(pkt) | |
| + next if not mcall | |
| + | |
| + if (pkt[0,1].unpack("C")[0] & 0x80) != 0 | |
| + mcall.handle_control(pkt) | |
| + else | |
| + # Dispatch the buffer via the call handler | |
| + mcall.handle_audio(pkt) | |
| + end | |
| + rescue ::Exception => e | |
| + dprint("monitor_socket: #{e.class} #{e} #{e.backtrace}") | |
| + break | |
| + end | |
| + end | |
| + self.sock.close rescue nil | |
| + end | |
| + | |
| + def matching_call(pkt) | |
| + src_call = pkt[0,2].unpack('n')[0] | |
| + dst_call = nil | |
| + | |
| + if (src_call & 0x8000 != 0) | |
| + dst_call = pkt[2,2].unpack('n')[0] | |
| + dst_call ^= 0x8000 if (dst_call & 0x8000 != 0) | |
| + end | |
| + | |
| + src_call ^= 0x8000 if (src_call & 0x8000 != 0) | |
| + | |
| + # Find a matching call in our list | |
| + mcall = self.calls.values.select {|x| x.dcall == src_call or (dst_call and… | |
| + if not mcall | |
| + dprint("Packet received for non-existent call #{[src_call, dst_call].ins… | |
| + return | |
| + end | |
| + mcall | |
| + end | |
| + | |
| + def allocate_call_id | |
| + res = ( self.src_call_idx += 1 ) | |
| + if ( res > 0x8000 ) | |
| + self.src_call_idx = 1 | |
| + res = 1 | |
| + end | |
| + res | |
| + end | |
| + | |
| + def dprint(msg) | |
| + return if not self.debugging | |
| + $stderr.puts "[#{Time.now.to_s}] #{msg}" | |
| + end | |
| + | |
| + def send_data(call, data, inc_seq = true ) | |
| + r = self.sock.sendto(data, self.server_host, self.server_port, 0) | |
| + if inc_seq | |
| + call.oseq = (call.oseq + 1) & 0xff | |
| + end | |
| + r | |
| + end | |
| + | |
| + def send_ack(call) | |
| + data = [ IAX_SUBTYPE_ACK ].pack('C') | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_pong(call, stamp) | |
| + data = [ IAX_SUBTYPE_PONG ].pack('C') | |
| + send_data( call, create_pkt( call.scall, call.dcall, stamp, call.oseq, cal… | |
| + end | |
| + | |
| + def send_lagrp(call, stamp) | |
| + data = [ IAX_SUBTYPE_LAGRP ].pack('C') | |
| + send_data( call, create_pkt( call.scall, call.dcall, stamp, call.oseq, cal… | |
| + end | |
| + | |
| + | |
| + def send_invalid(call) | |
| + data = [ IAX_SUBTYPE_INVAL ].pack('C') | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_hangup(call) | |
| + data = [ IAX_SUBTYPE_HANGUP ].pack('C') | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_new(call, number) | |
| + data = [ IAX_SUBTYPE_NEW ].pack('C') | |
| + | |
| + cid = call.caller_number || self.caller_number | |
| + cid = number if cid == 'SELF' | |
| + | |
| + data << create_ie(IAX_IE_CALLING_NUMBER, cid ) | |
| + data << create_ie(IAX_IE_CALLING_NAME, call.caller_name || self.caller_nam… | |
| + data << create_ie(IAX_IE_DESIRED_CODEC, [IAX_SUPPORTED_CODECS].pack("N") ) | |
| + data << create_ie(IAX_IE_ACTUAL_CODECS, [IAX_SUPPORTED_CODECS].pack("N") ) | |
| + data << create_ie(IAX_IE_USERNAME, self.username) if self.username | |
| + data << create_ie(IAX_IE_CALLED_NUMBER, number) | |
| + data << create_ie(IAX_IE_ORIGINAL_DID, number) | |
| + | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_authrep_chall_response(call, chall) | |
| + data = | |
| + [ IAX_SUBTYPE_AUTHREP ].pack('C') + | |
| + create_ie(IAX_IE_CHALLENGE_RESP, ::Digest::MD5.hexdigest( chall + self.p… | |
| + | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_regreq(call) | |
| + data = [ IAX_SUBTYPE_REGREQ ].pack('C') | |
| + data << create_ie(IAX_IE_USERNAME, self.username) if self.username | |
| + data << create_ie(IAX_IE_REG_REFRESH, [IAX_DEFAULT_REG_REFRESH].pack('n')) | |
| + | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def send_regreq_chall_response(call, chall) | |
| + data = | |
| + [ IAX_SUBTYPE_REGREQ ].pack('C') + | |
| + create_ie(IAX_IE_USERNAME, self.username) + | |
| + create_ie(IAX_IE_CHALLENGE_RESP, ::Digest::MD5.hexdigest( chall + self.p… | |
| + create_ie(IAX_IE_REG_REFRESH, [IAX_DEFAULT_REG_REFRESH].pack('n')) | |
| + | |
| + send_data( call, create_pkt( call.scall, call.dcall, call.timestamp, call.… | |
| + end | |
| + | |
| + def create_ie(ie_type, ie_data) | |
| + [ie_type, ie_data.length].pack('CC') + ie_data | |
| + end | |
| + | |
| + def create_pkt(src_call, dst_call, tstamp, out_seq, inp_seq, itype, data) | |
| + [ | |
| + src_call | 0x8000, # High bit indicates a full packet | |
| + dst_call, | |
| + tstamp, | |
| + out_seq & 0xff, # Sequence numbers wrap at 8-bits | |
| + inp_seq & 0xff, # Sequence numbers wrap at 8-bits | |
| + itype | |
| + ].pack('nnNCCC') + data | |
| + end | |
| + | |
| +end | |
| +end | |
| +end | |
| +end | |
| + | |
| diff --git a/lib/warvox/proto/iax2/codecs.rb b/lib/warvox/proto/iax2/codecs.rb | |
| @@ -0,0 +1,5 @@ | |
| +# -*- coding: binary -*- | |
| +require 'warvox/proto/iax2/codecs/g711' | |
| +require 'warvox/proto/iax2/codecs/mulaw' | |
| +require 'warvox/proto/iax2/codecs/alaw' | |
| + | |
| diff --git a/lib/warvox/proto/iax2/codecs/alaw.rb b/lib/warvox/proto/iax2/codec… | |
| @@ -0,0 +1,16 @@ | |
| +# -*- coding: binary -*- | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| +module Codecs | |
| +class ALaw < G711 | |
| + | |
| + def self.decode(buff) | |
| + buff.unpack("C*").map{ |x| LOOKUP_ALAW2LIN16[x] }.pack('v*') | |
| + end | |
| + | |
| +end | |
| +end | |
| +end | |
| +end | |
| +end | |
| diff --git a/lib/warvox/proto/iax2/codecs/g711.rb b/lib/warvox/proto/iax2/codec… | |
| @@ -0,0 +1,2176 @@ | |
| +# -*- coding: binary -*- | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| +module Codecs | |
| +class G711 | |
| + | |
| +=begin | |
| + | |
| +/* g711.h - include for G711 u-law and a-law conversion routines | |
| + * | |
| + * Copyright (C) 2001 Chris Bagwell | |
| + * | |
| + * Permission to use, copy, modify, and distribute this software and its | |
| + * documentation for any purpose and without fee is hereby granted, provided | |
| + * that the above copyright notice appear in all copies and that both that | |
| + * copyright notice and this permission notice appear in supporting | |
| + * documentation. This software is provided "as is" without express or | |
| + * implied warranty. | |
| + */ | |
| + | |
| +/* | |
| + * g711.c | |
| + * | |
| + * u-law, A-law and linear PCM conversions. | |
| + * | |
| + * Permission to use, copy, modify, and distribute this software and its | |
| + * documentation for any purpose and without fee is hereby granted, provided | |
| + * that the above copyright notice appear in all copies and that both that | |
| + * copyright notice and this permission notice appear in supporting | |
| + * documentation. This software is provided "as is" without express or | |
| + * implied warranty. | |
| + */ | |
| + | |
| +=end | |
| + | |
| +LOOKUP_ALAW2LIN16 = [ | |
| + -5504, -5248, -6016, -5760, -4480, -4224, -4992, | |
| + -4736, -7552, -7296, -8064, -7808, -6528, -6272, | |
| + -7040, -6784, -2752, -2624, -3008, -2880, -2240, | |
| + -2112, -2496, -2368, -3776, -3648, -4032, -3904, | |
| + -3264, -3136, -3520, -3392, -22016, -20992, -24064, | |
| + -23040, -17920, -16896, -19968, -18944, -30208, -29184, | |
| + -32256, -31232, -26112, -25088, -28160, -27136, -11008, | |
| + -10496, -12032, -11520, -8960, -8448, -9984, -9472, | |
| + -15104, -14592, -16128, -15616, -13056, -12544, -14080, | |
| + -13568, -344, -328, -376, -360, -280, -264, | |
| + -312, -296, -472, -456, -504, -488, -408, | |
| + -392, -440, -424, -88, -72, -120, -104, | |
| + -24, -8, -56, -40, -216, -200, -248, | |
| + -232, -152, -136, -184, -168, -1376, -1312, | |
| + -1504, -1440, -1120, -1056, -1248, -1184, -1888, | |
| + -1824, -2016, -1952, -1632, -1568, -1760, -1696, | |
| + -688, -656, -752, -720, -560, -528, -624, | |
| + -592, -944, -912, -1008, -976, -816, -784, | |
| + -880, -848, 5504, 5248, 6016, 5760, 4480, | |
| + 4224, 4992, 4736, 7552, 7296, 8064, 7808, | |
| + 6528, 6272, 7040, 6784, 2752, 2624, 3008, | |
| + 2880, 2240, 2112, 2496, 2368, 3776, 3648, | |
| + 4032, 3904, 3264, 3136, 3520, 3392, 22016, | |
| + 20992, 24064, 23040, 17920, 16896, 19968, 18944, | |
| + 30208, 29184, 32256, 31232, 26112, 25088, 28160, | |
| + 27136, 11008, 10496, 12032, 11520, 8960, 8448, | |
| + 9984, 9472, 15104, 14592, 16128, 15616, 13056, | |
| + 12544, 14080, 13568, 344, 328, 376, 360, | |
| + 280, 264, 312, 296, 472, 456, 504, | |
| + 488, 408, 392, 440, 424, 88, 72, | |
| + 120, 104, 24, 8, 56, 40, 216, | |
| + 200, 248, 232, 152, 136, 184, 168, | |
| + 1376, 1312, 1504, 1440, 1120, 1056, 1248, | |
| + 1184, 1888, 1824, 2016, 1952, 1632, 1568, | |
| + 1760, 1696, 688, 656, 752, 720, 560, | |
| + 528, 624, 592, 944, 912, 1008, 976, | |
| + 816, 784, 880, 848 | |
| +] | |
| + | |
| +LOOKUP_LIN2ALAW = [ | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, | |
| + 0x6b, 0x6b, 0x6b, 0x6b, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, | |
| + 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x6e, 0x6e, 0x6e, 0x6e, | |
| + 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, | |
| + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, | |
| + 0x6d, 0x6d, 0x6d, 0x6d, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, | |
| + 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x60, 0x60, 0x60, 0x60, | |
| + 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, | |
| + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, | |
| + 0x67, 0x67, 0x67, 0x67, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, | |
| + 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x7a, 0x7a, 0x7a, 0x7a, | |
| + 0x7b, 0x7b, 0x7b, 0x7b, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, | |
| + 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7c, 0x7c, 0x7c, 0x7c, | |
| + 0x7d, 0x7d, 0x7d, 0x7d, 0x72, 0x72, 0x72, 0x72, 0x73, 0x73, 0x73, 0x73, | |
| + 0x70, 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x71, 0x76, 0x76, 0x76, 0x76, | |
| + 0x77, 0x77, 0x77, 0x77, 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, | |
| + 0x4a, 0x4a, 0x4b, 0x4b, 0x48, 0x48, 0x49, 0x49, 0x4e, 0x4e, 0x4f, 0x4f, | |
| + 0x4c, 0x4c, 0x4d, 0x4d, 0x42, 0x42, 0x43, 0x43, 0x40, 0x40, 0x41, 0x41, | |
| + 0x46, 0x46, 0x47, 0x47, 0x44, 0x44, 0x45, 0x45, 0x5a, 0x5a, 0x5b, 0x5b, | |
| + 0x58, 0x58, 0x59, 0x59, 0x5e, 0x5e, 0x5f, 0x5f, 0x5c, 0x5c, 0x5d, 0x5d, | |
| + 0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 0x56, 0x56, 0x57, 0x57, | |
| + 0x54, 0x54, 0x55, 0x55, 0xd5, 0xd5, 0xd4, 0xd4, 0xd7, 0xd7, 0xd6, 0xd6, | |
| + 0xd1, 0xd1, 0xd0, 0xd0, 0xd3, 0xd3, 0xd2, 0xd2, 0xdd, 0xdd, 0xdc, 0xdc, | |
| + 0xdf, 0xdf, 0xde, 0xde, 0xd9, 0xd9, 0xd8, 0xd8, 0xdb, 0xdb, 0xda, 0xda, | |
| + 0xc5, 0xc5, 0xc4, 0xc4, 0xc7, 0xc7, 0xc6, 0xc6, 0xc1, 0xc1, 0xc0, 0xc0, | |
| + 0xc3, 0xc3, 0xc2, 0xc2, 0xcd, 0xcd, 0xcc, 0xcc, 0xcf, 0xcf, 0xce, 0xce, | |
| + 0xc9, 0xc9, 0xc8, 0xc8, 0xcb, 0xcb, 0xca, 0xca, 0xf5, 0xf5, 0xf5, 0xf5, | |
| + 0xf4, 0xf4, 0xf4, 0xf4, 0xf7, 0xf7, 0xf7, 0xf7, 0xf6, 0xf6, 0xf6, 0xf6, | |
| + 0xf1, 0xf1, 0xf1, 0xf1, 0xf0, 0xf0, 0xf0, 0xf0, 0xf3, 0xf3, 0xf3, 0xf3, | |
| + 0xf2, 0xf2, 0xf2, 0xf2, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, | |
| + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xf9, 0xf9, 0xf9, 0xf9, | |
| + 0xf8, 0xf8, 0xf8, 0xf8, 0xfb, 0xfb, 0xfb, 0xfb, 0xfa, 0xfa, 0xfa, 0xfa, | |
| + 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4, | |
| + 0xe4, 0xe4, 0xe4, 0xe4, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, | |
| + 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe1, 0xe1, 0xe1, 0xe1, | |
| + 0xe1, 0xe1, 0xe1, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, | |
| + 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2, | |
| + 0xe2, 0xe2, 0xe2, 0xe2, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, | |
| + 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xef, 0xef, 0xef, 0xef, | |
| + 0xef, 0xef, 0xef, 0xef, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, | |
| + 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, | |
| + 0xe8, 0xe8, 0xe8, 0xe8, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, | |
| + 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa | |
| +] | |
| + | |
| +LOOKUP_ULAW2LIN16 = [ | |
| + -32124, -31100, -30076, -29052, -28028, -27004, -25980, | |
| + -24956, -23932, -22908, -21884, -20860, -19836, -18812, | |
| + -17788, -16764, -15996, -15484, -14972, -14460, -13948, | |
| + -13436, -12924, -12412, -11900, -11388, -10876, -10364, | |
| + -9852, -9340, -8828, -8316, -7932, -7676, -7420, | |
| + -7164, -6908, -6652, -6396, -6140, -5884, -5628, | |
| + -5372, -5116, -4860, -4604, -4348, -4092, -3900, | |
| + -3772, -3644, -3516, -3388, -3260, -3132, -3004, | |
| + -2876, -2748, -2620, -2492, -2364, -2236, -2108, | |
| + -1980, -1884, -1820, -1756, -1692, -1628, -1564, | |
| + -1500, -1436, -1372, -1308, -1244, -1180, -1116, | |
| + -1052, -988, -924, -876, -844, -812, -780, | |
| + -748, -716, -684, -652, -620, -588, -556, | |
| + -524, -492, -460, -428, -396, -372, -356, | |
| + -340, -324, -308, -292, -276, -260, -244, | |
| + -228, -212, -196, -180, -164, -148, -132, | |
| + -120, -112, -104, -96, -88, -80, -72, | |
| + -64, -56, -48, -40, -32, -24, -16, | |
| + -8, 0, 32124, 31100, 30076, 29052, 28028, | |
| + 27004, 25980, 24956, 23932, 22908, 21884, 20860, | |
| + 19836, 18812, 17788, 16764, 15996, 15484, 14972, | |
| + 14460, 13948, 13436, 12924, 12412, 11900, 11388, | |
| + 10876, 10364, 9852, 9340, 8828, 8316, 7932, | |
| + 7676, 7420, 7164, 6908, 6652, 6396, 6140, | |
| + 5884, 5628, 5372, 5116, 4860, 4604, 4348, | |
| + 4092, 3900, 3772, 3644, 3516, 3388, 3260, | |
| + 3132, 3004, 2876, 2748, 2620, 2492, 2364, | |
| + 2236, 2108, 1980, 1884, 1820, 1756, 1692, | |
| + 1628, 1564, 1500, 1436, 1372, 1308, 1244, | |
| + 1180, 1116, 1052, 988, 924, 876, 844, | |
| + 812, 780, 748, 716, 684, 652, 620, | |
| + 588, 556, 524, 492, 460, 428, 396, | |
| + 372, 356, 340, 324, 308, 292, 276, | |
| + 260, 244, 228, 212, 196, 180, 164, | |
| + 148, 132, 120, 112, 104, 96, 88, | |
| + 80, 72, 64, 56, 48, 40, 32, | |
| + 24, 16, 8, 0 | |
| +] | |
| + | |
| +LOOKUP_LIN2ULAW = [ | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | |
| + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | |
| + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, | |
| + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, | |
| + 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, | |
| + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, | |
| + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, | |
| + 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | |
| + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, | |
| + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, | |
| + 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, | |
| + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, | |
| + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, | |
| + 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, | |
| + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, | |
| + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, | |
| + 0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, | |
| + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, | |
| + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, | |
| + 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, | |
| + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, | |
| + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, | |
| + 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, | |
| + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, | |
| + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, | |
| + 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, | |
| + 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, | |
| + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, | |
| + 0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, | |
| + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, | |
| + 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, | |
| + 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, | |
| + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, | |
| + 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, | |
| + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, | |
| + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, | |
| + 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, | |
| + 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, | |
| + 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, | |
| + 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, | |
| + 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, | |
| + 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, | |
| + 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, | |
| + 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, | |
| + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, | |
| + 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, | |
| + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, | |
| + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, | |
| + 0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, | |
| + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, | |
| + 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, | |
| + 0x32, 0x32, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, | |
| + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, | |
| + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, | |
| + 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, | |
| + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, | |
| + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, | |
| + 0x38, 0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, | |
| + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, | |
| + 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, | |
| + 0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, | |
| + 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, | |
| + 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, | |
| + 0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, | |
| + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x40, 0x40, | |
| + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, | |
| + 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, | |
| + 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, | |
| + 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, | |
| + 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, | |
| + 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, | |
| + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, | |
| + 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x46, 0x46, | |
| + 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, | |
| + 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, | |
| + 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, | |
| + 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, | |
| + 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, | |
| + 0x49, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, | |
| + 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, | |
| + 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, | |
| + 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, | |
| + 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, | |
| + 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, | |
| + 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, | |
| + 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, | |
| + 0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, | |
| + 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, | |
| + 0x52, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x54, | |
| + 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, | |
| + 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, | |
| + 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, | |
| + 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x5a, 0x5a, | |
| + 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, | |
| + 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, | |
| + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, | |
| + 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x60, 0x60, | |
| + 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, | |
| + 0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, 0x65, 0x65, 0x66, 0x66, | |
| + 0x66, 0x66, 0x67, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, | |
| + 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6b, 0x6b, 0x6c, 0x6c, | |
| + 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, | |
| + 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, | |
| + 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, | |
| + 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0xff, 0xfe, 0xfe, 0xfd, | |
| + 0xfd, 0xfc, 0xfc, 0xfb, 0xfb, 0xfa, 0xfa, 0xf9, 0xf9, 0xf8, 0xf8, 0xf7, | |
| + 0xf7, 0xf6, 0xf6, 0xf5, 0xf5, 0xf4, 0xf4, 0xf3, 0xf3, 0xf2, 0xf2, 0xf1, | |
| + 0xf1, 0xf0, 0xf0, 0xef, 0xef, 0xef, 0xef, 0xee, 0xee, 0xee, 0xee, 0xed, | |
| + 0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xeb, 0xeb, 0xeb, 0xeb, 0xea, | |
| + 0xea, 0xea, 0xea, 0xe9, 0xe9, 0xe9, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe7, | |
| + 0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe5, 0xe5, 0xe5, 0xe5, 0xe4, | |
| + 0xe4, 0xe4, 0xe4, 0xe3, 0xe3, 0xe3, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2, 0xe1, | |
| + 0xe1, 0xe1, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, | |
| + 0xdf, 0xdf, 0xdf, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdd, | |
| + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, | |
| + 0xdc, 0xdc, 0xdc, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xda, | |
| + 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, | |
| + 0xd9, 0xd9, 0xd9, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd7, | |
| + 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, | |
| + 0xd6, 0xd6, 0xd6, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd4, | |
| + 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, | |
| + 0xd3, 0xd3, 0xd3, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd1, | |
| + 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, | |
| + 0xd0, 0xd0, 0xd0, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, | |
| + 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xce, 0xce, 0xce, 0xce, 0xce, | |
| + 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcd, | |
| + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, | |
| + 0xcd, 0xcd, 0xcd, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, | |
| + 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, | |
| + 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, | |
| + 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, | |
| + 0xca, 0xca, 0xca, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, | |
| + 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, | |
| + 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc7, | |
| + 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, | |
| + 0xc7, 0xc7, 0xc7, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, | |
| + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, | |
| + 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc4, | |
| + 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, | |
| + 0xc4, 0xc4, 0xc4, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, | |
| + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, | |
| + 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc1, | |
| + 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, | |
| + 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | |
| + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, | |
| + 0xbf, 0xbf, 0xbf, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, | |
| + 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, | |
| + 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, | |
| + 0xbc, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, | |
| + 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, | |
| + 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, | |
| + 0xb9, 0xb9, 0xb9, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, | |
| + 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, | |
| + 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, | |
| + 0xb6, 0xb6, 0xb6, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, | |
| + 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, | |
| + 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, | |
| + 0xb3, 0xb3, 0xb3, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, | |
| + 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, | |
| + 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, | |
| + 0xb0, 0xb0, 0xb0, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, | |
| + 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, | |
| + 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, | |
| + 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, | |
| + 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, | |
| + 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, | |
| + 0xaa, 0xaa, 0xaa, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, | |
| + 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, | |
| + 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, | |
| + 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, | |
| + 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, | |
| + 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, | |
| + 0xa4, 0xa4, 0xa4, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, | |
| + 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, | |
| + 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, | |
| + 0xa1, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, | |
| + 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, | |
| + 0x9f, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, | |
| + 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, | |
| + 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, | |
| + 0x9c, 0x9c, 0x9c, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, | |
| + 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, | |
| + 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, | |
| + 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, | |
| + 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, | |
| + 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, | |
| + 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, | |
| + 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, | |
| + 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, | |
| + 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, | |
| + 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, | |
| + 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | |
| + 0x90, 0x90, 0x90, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, | |
| + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, | |
| + 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, | |
| + 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, | |
| + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, | |
| + 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, | |
| + 0x8a, 0x8a, 0x8a, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, | |
| + 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, | |
| + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, | |
| + 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, | |
| + 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, | |
| + 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, | |
| + 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, | |
| + 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, | |
| + 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, | |
| + 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, | |
| + 0x80, 0x80, 0x80, 0x80 | |
| +] | |
| + | |
| +end | |
| +end | |
| +end | |
| +end | |
| +end | |
| diff --git a/lib/warvox/proto/iax2/codecs/mulaw.rb b/lib/warvox/proto/iax2/code… | |
| @@ -0,0 +1,17 @@ | |
| +# -*- coding: binary -*- | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| +module Codecs | |
| +class MuLaw < G711 | |
| + | |
| + | |
| + def self.decode(buff) | |
| + buff.unpack("C*").map{ |x| LOOKUP_ULAW2LIN16[x] }.pack('v*') | |
| + end | |
| + | |
| +end | |
| +end | |
| +end | |
| +end | |
| +end | |
| diff --git a/lib/warvox/proto/iax2/constants.rb b/lib/warvox/proto/iax2/constan… | |
| @@ -0,0 +1,262 @@ | |
| +# -*- coding: binary -*- | |
| +module WarVOX | |
| +module Proto | |
| +module IAX2 | |
| + | |
| + | |
| +IAX2_DEFAULT_PORT = 4569 | |
| + | |
| + | |
| +IAX_TYPE_VOICE = 2 | |
| +IAX_TYPE_CONTROL = 4 | |
| +IAX_TYPE_IAX = 6 | |
| +IAX_TYPE_DTMF_BEGIN = 1 | |
| +IAX_TYPE_DTMF_END = 12 | |
| + | |
| +IAX_CTRL_HANGUP = 1 | |
| +IAX_CTRL_RINGING = 3 | |
| +IAX_CTRL_ANSWER = 4 | |
| +IAX_CTRL_BUSY = 5 | |
| +IAX_CTRL_PROGRESS = 14 | |
| +IAX_CTRL_PROCEED = 15 | |
| + | |
| +=begin | |
| + +-------------+---------------+-------------------------------------+ | |
| + | VALUE | Name | Description | | |
| + +-------------+---------------+-------------------------------------+ | |
| + | 0x01 | Hangup | The call has been hungup at the | | |
| + | | | remote end | | |
| + | | | | | |
| + | 0x02 | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x03 | Ringing | Remote end is ringing (ring-back) | | |
| + | | | | | |
| + | 0x04 | Answer | Remote end has answered | | |
| + | | | | | |
| + | 0x05 | Busy | Remote end is busy | | |
| + | | | | | |
| + | 0x06 | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x07 | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x08 | Congestion | The call is congested | | |
| + | | | | | |
| + | 0x09 | Flash Hook | Flash hook | | |
| + | | | | | |
| + | 0x0a | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x0b | Option | Device-specific options are being | | |
| + | | | transmitted | | |
| + | | | | | |
| + | 0x0c | Key Radio | Key Radio | | |
| + | | | | | |
| + | 0x0d | Unkey Radio | Unkey Radio | | |
| + | | | | | |
| + | 0x0e | Call Progress | Call is in progress | | |
| + | | | | | |
| + | 0x0f | Call | Call is proceeding | | |
| + | | Proceeding | | | |
| + | | | | | |
| + | 0x10 | Hold | Call is placed on hold | | |
| + | | | | | |
| + | 0x11 | Unhold | Call is taken off hold | | |
| + +-------------+---------------+-------------------------------------+ | |
| +=end | |
| + | |
| + | |
| +IAX_SUBTYPE_NEW = 1 | |
| +IAX_SUBTYPE_PING = 2 | |
| +IAX_SUBTYPE_PONG = 3 | |
| +IAX_SUBTYPE_ANSWER = 4 | |
| +IAX_SUBTYPE_ACK = 4 | |
| +IAX_SUBTYPE_HANGUP = 5 | |
| +IAX_SUBTYPE_REJECT = 6 | |
| +IAX_SUBTYPE_ACCEPT = 7 | |
| +IAX_SUBTYPE_AUTHREQ = 8 | |
| +IAX_SUBTYPE_AUTHREP = 9 | |
| +IAX_SUBTYPE_INVAL = 10 | |
| +IAX_SUBTYPE_LAGRQ = 11 | |
| +IAX_SUBTYPE_LAGRP = 12 | |
| +IAX_SUBTYPE_REGREQ = 13 | |
| +IAX_SUBTYPE_REGAUTH = 14 | |
| +IAX_SUBTYPE_REGACK = 15 | |
| +IAX_SUBTYPE_REGREJ = 16 | |
| +IAX_SUBTYPE_REGREL = 17 | |
| +IAX_SUBTYPE_VNAK = 18 | |
| + | |
| +=begin | |
| + +------+-----------+-----------------------------------------+ | |
| + | Hex | Name | Description | | |
| + +------+-----------+-----------------------------------------+ | |
| + | 0x01 | NEW | Initiate a new call | | |
| + | | | | | |
| + | 0x02 | PING | Ping request | | |
| + | | | | | |
| + | 0x03 | PONG | Ping or poke reply | | |
| + | | | | | |
| + | 0x04 | ACK | Explicit acknowledgment | | |
| + | | | | | |
| + | 0x05 | HANGUP | Initiate call tear-down | | |
| + | | | | | |
| + | 0x06 | REJECT | Reject a call | | |
| + | | | | | |
| + | 0x07 | ACCEPT | Accept a call | | |
| + | | | | | |
| + | 0x08 | AUTHREQ | Authentication request | | |
| + | | | | | |
| + | 0x09 | AUTHREP | Authentication reply | | |
| + | | | | | |
| + | 0x0a | INVAL | Invalid message | | |
| + | | | | | |
| + | 0x0b | LAGRQ | Lag request | | |
| + | | | | | |
| + | 0x0c | LAGRP | Lag reply | | |
| + | | | | | |
| + | 0x0d | REGREQ | Registration request | | |
| + | | | | | |
| + | 0x0e | REGAUTH | Registration authentication | | |
| + | | | | | |
| + | 0x0f | REGACK | Registration acknowledgement | | |
| + | | | | | |
| + | 0x10 | REGREJ | Registration reject | | |
| + | | | | | |
| + | 0x11 | REGREL | Registration release | | |
| + | | | | | |
| + | 0x12 | VNAK | Video/Voice retransmit request | | |
| + | | | | | |
| + | 0x13 | DPREQ | Dialplan request | | |
| + | | | | | |
| + | 0x14 | DPREP | Dialplan reply | | |
| + | | | | | |
| + | 0x15 | DIAL | Dial | | |
| + | | | | | |
| + | 0x16 | TXREQ | Transfer request | | |
| + | | | | | |
| + | 0x17 | TXCNT | Transfer connect | | |
| + | | | | | |
| + | 0x18 | TXACC | Transfer accept | | |
| + | | | | | |
| + | 0x19 | TXREADY | Transfer ready | | |
| + | | | | | |
| + | 0x1a | TXREL | Transfer release | | |
| + | | | | | |
| + | 0x1b | TXREJ | Transfer reject | | |
| + | | | | | |
| + | 0x1c | QUELCH | Halt audio/video [media] transmission | | |
| + | | | | | |
| + | 0x1d | UNQUELCH | Resume audio/video [media] transmission | | |
| + | | | | | |
| + | 0x1e | POKE | Poke request | | |
| + | | | | | |
| + | 0x1f | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x20 | MWI | Message waiting indication | | |
| + | | | | | |
| + | 0x21 | UNSUPPORT | Unsupported message | | |
| + | | | | | |
| + | 0x22 | TRANSFER | Remote transfer request | | |
| + | | | | | |
| + | 0x23 | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x24 | Reserved | Reserved for future use | | |
| + | | | | | |
| + | 0x25 | Reserved | Reserved for future use | | |
| + +------+-----------+-----------------------------------------+ | |
| +=end | |
| + | |
| +IAX_IE_CALLED_NUMBER = 1 | |
| +IAX_IE_CALLING_NUMBER = 2 | |
| +IAX_IE_AUTH_METHODS = 3 | |
| +IAX_IE_CALLING_NAME = 4 | |
| +IAX_IE_USERNAME = 6 | |
| +IAX_IE_DESIRED_CODEC = 9 | |
| +IAX_IE_ORIGINAL_DID = 10 | |
| +IAX_IE_ACTUAL_CODECS = 8 | |
| +IAX_IE_PROTO_VERSION = 11 | |
| +IAX_IE_REG_REFRESH = 19 | |
| +IAX_IE_CHALLENGE_DATA = 15 | |
| +IAX_IE_CHALLENGE_RESP = 16 | |
| +IAX_IE_APPARENT_ADDR = 18 | |
| +IAX_IE_REGREJ_CAUSE = 22 | |
| +IAX_IE_HANGUP_CAUSE = 42 | |
| + | |
| +=begin | |
| + +------+----------------+-------------------------------------------+ | |
| + | HEX | NAME | DESCRIPTION | | |
| + +------+----------------+-------------------------------------------+ | |
| + | HEX | NAME | DESCRIPTION | | |
| + | 0x01 | CALLED NUMBER | Number/extension being called | | |
| + | 0x02 | CALLING NUMBER | Calling number | | |
| + | 0x03 | CALLING ANI | Calling number ANI for billing | | |
| + | 0x04 | CALLING NAME | Name of caller | | |
| + | 0x05 | CALLED CONTEXT | Context for number | | |
| + | 0x06 | USERNAME | Username (peer or user) for | | |
| + | | | authentication | | |
| + | 0x07 | PASSWORD | Password for authentication | | |
| + | 0x08 | CAPABILITY | Actual CODEC capability | | |
| + | 0x09 | FORMAT | Desired CODEC format | | |
| + | 0x0a | LANGUAGE | Desired language | | |
| + | 0x0b | VERSION | Protocol version | | |
| + | 0x0c | ADSICPE | CPE ADSI capability | | |
| + | 0x0d | DNID | Originally dialed DNID | | |
| + | 0x0e | AUTHMETHODS | Authentication method(s) | | |
| + | 0x0f | CHALLENGE | Challenge data for MD5/RSA | | |
| + | 0x10 | MD5 RESULT | MD5 challenge result | | |
| + | 0x11 | RSA RESULT | RSA challenge result | | |
| + | 0x12 | APPARENT ADDR | Apparent address of peer | | |
| + | 0x13 | REFRESH | When to refresh registration | | |
| + | 0x14 | DPSTATUS | Dialplan status | | |
| + | 0x15 | CALLNO | Call number of peer | | |
| + | 0x16 | CAUSE | Cause | | |
| + | 0x17 | IAX UNKNOWN | Unknown IAX command | | |
| + | 0x18 | MSGCOUNT | How many messages waiting | | |
| + | 0x19 | AUTOANSWER | Request auto-answering | | |
| + | 0x1a | MUSICONHOLD | Request musiconhold with QUELCH | | |
| + | 0x1b | TRANSFERID | Transfer Request Identifier | | |
| + | 0x1c | RDNIS | Referring DNIS | | |
| + | 0x1d | Reserved | Reserved for future use | | |
| + | 0x1e | Reserved | Reserved for future use | | |
| + | 0x1f | DATETIME | Date/Time | | |
| + | 0x20 | Reserved | Reserved for future use | | |
| + | 0x21 | Reserved | Reserved for future use | | |
| + | 0x22 | Reserved | Reserved for future use | | |
| + | 0x23 | Reserved | Reserved for future use | | |
| + | 0x24 | Reserved | Reserved for future use | | |
| + | 0x25 | Reserved | Reserved for future use | | |
| + | 0x26 | CALLINGPRES | Calling presentation | | |
| + | 0x27 | CALLINGTON | Calling type of number | | |
| + | 0x28 | CALLINGTNS | Calling transit network select | | |
| + | 0x29 | SAMPLINGRATE | Supported sampling rates | | |
| + | 0x2a | CAUSECODE | Hangup cause | | |
| + | 0x2b | ENCRYPTION | Encryption format | | |
| + | 0x2c | ENCKEY | Reserved for future Use | | |
| + | 0x2d | CODEC PREFS | CODEC Negotiation | | |
| + | 0x2e | RR JITTER | Received jitter, as in RFC 3550 | | |
| + | 0x2f | RR LOSS | Received loss, as in RFC 3550 | | |
| + | 0x30 | RR PKTS | Received frames | | |
| + | 0x31 | RR DELAY | Max playout delay for received frames in | | |
| + | | | ms | | |
| + | 0x32 | RR DROPPED | Dropped frames (presumably by jitter | | |
| + | | | buffer) | | |
| + | 0x33 | RR OOO | Frames received Out of Order | | |
| + | 0x34 | OSPTOKEN | OSP Token Block | | |
| + +------+----------------+-------------------------------------------+ | |
| +=end | |
| + | |
| + | |
| +# Codecs | |
| +IAX_CODEC_G711_MULAW = 0x00000004 | |
| +IAX_CODEC_G711_ALAW = 0x00000008 | |
| +IAX_CODEC_LINEAR_PCM = 0x00000040 | |
| + | |
| +# Supported | |
| +IAX_SUPPORTED_CODECS = IAX_CODEC_G711_MULAW | IAX_CODEC_G711_ALAW | IAX_CODEC… | |
| + | |
| +# Default timings | |
| +IAX_DEFAULT_REG_REFRESH = 60 | |
| +IAX_DEFAULT_TIMEOUT = 10 | |
| + | |
| + | |
| +end | |
| +end | |
| +end |